Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Уровень сложности на паблике.

, Создание меню и замена моделей.
Статус пользователя explosiondj
сообщение 5.7.2014, 13:52
Сообщение #1
Стаж: 14 лет

Сообщений: 44
Благодарностей: 1
Полезность: < 0

На сервере для каждой команды у меня автоматически выбирается одна модель (допустим m-2-2 m 1-2)

Как игрок зашел на сервер и возродился (спасибо trollface за плагин) ему должна вылететь меню, в которой написано:

"Выберите уровень сложности:"

"Легкий - синие и красные модели у игроков"
если выбрал легкий, то потом вылезает сообщение (то же в худ) "отменить - наберите в чате /off"

"Нормальный - все, как у всех"

Конечно же там заранее загружаются модели. И вот только он выбрал легкий, на модели у кт и т вешаются синяя и красная модели (благо что они m 2-2 u m 1-2)

И конечно же возврат к дефолту это прописать в чате команду /off

Возможно ли сделать такое?

Trollface, будет еще и третий плаг, но там ерунда. Если все три заказа выполнишь ты, то с меня сотки 2е (не просто же спасибо) blush2.gif

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Safety1st
сообщение 5.7.2014, 17:39
Сообщение #2
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Тут модели без нагрузки ставить - большая сложность. А с нагрузкой с помощью AddToFullPack - глупое расходование кучи ресурсов.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nixon
сообщение 5.7.2014, 18:25
Сообщение #3


Стаж: 12 лет

Сообщений: 399
Благодарностей: 192
Полезность: 589

Не?
Код:
/* [CREDITS] */
/* set model by freedo.m */

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN_NAME "hz"
#define PLUGIN_VERS "1.0"
#define PLUGIN_AUTH "NIXON"

#pragma semicolon 1;

new const gPlayerModelDir[][] = {
"models/player/sas/sas.mdl",
"models/player/terror/terror.mdl"
};

new gPlayerModel[33][32];
new bool: gBitCustomModel[33];
new bool: gBitClientAccess[33];

public plugin_init() {
register_plugin(PLUGIN_NAME, PLUGIN_VERS, PLUGIN_AUTH);

RegisterHam(Ham_Spawn, "player", "HamPlayerSpawn", 1);

register_forward(FM_SetClientKeyValue, "ForwardSetClient", 0);

register_clcmd("say /off", "ClCmd_Off");
}

public plugin_precache() {
static i;
for(i = 0; i < sizeof(gPlayerModelDir); i++)
precache_model(gPlayerModelDir[i]);
}

public client_putinserver(id)
gBitClientAccess[id] = true;

public client_disconnect(id) {
gBitCustomModel[id] = false;
gBitClientAccess[id] = false;
}

public HamPlayerSpawn(id) {
if(!is_user_connected(id) || !is_user_alive(id))
return HAM_IGNORED;

Cmd_Menu(id);

return HAM_IGNORED;
}

public ForwardSetClient(id, const iInfoBuffer[], const iKey[]) {
if(gBitCustomModel[id] && equal(iKey, "model")) {
static iCurrentModel[32];
fnGetPlayerModel(id, iCurrentModel, charsmax(iCurrentModel));

if(!equal(iCurrentModel, gPlayerModel[id]))
fnSetPlayerModel(id, gPlayerModel[id]);

return FMRES_SUPERCEDE;
}

return FMRES_IGNORED;
}

public ClCmd_Off(id) {
if(gBitClientAccess[id])
gBitCustomModel[id] = false;
}

public Cmd_Menu(id) {
static iMenu[256];
formatex(iMenu, charsmax(iMenu), "Выберите уровень сложности:");
new Menu = menu_create(iMenu, "handled_Menu");

formatex(iMenu, charsmax(iMenu), "Легкий \r[BLUE-MODEL]");
menu_additem(Menu, iMenu, "1");
formatex(iMenu, charsmax(iMenu), "Сложный \r[RED-MODEL]");
menu_additem(Menu, iMenu, "2");

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

public handled_Menu(id, menu, item) {
new iData[6], iName[64], iAccess, iCallBack;
menu_item_getinfo(menu, item, iAccess, iData, charsmax(iData), iName, charsmax(iName), iCallBack);
new iKeys = str_to_num(iData);

if(!gBitClientAccess[id])
return PLUGIN_HANDLED;

set_hudmessage(255, 255, 255, -1.0, -1.0, 0, 6.0, 10.0);
show_hudmessage(id, "Чтобы вернуть предыдущую модель, пропишите /off");

switch(iKeys) {
case 1: {
client_print(id, print_chat, "Вы выбрали легкий режим!");
fnSetPlayerModel(id, "sas");
}
case 2: {
client_print(id, print_chat, "Вы выбрали сложный режим!");
fnSetPlayerModel(id, "terror");
}
}

return PLUGIN_HANDLED;
}

fnGetPlayerModel(id, iModel[], iLen)
engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, id), "model", iModel, iLen);

fnSetPlayerModel(id, const iModelName[]) {
engfunc(EngFunc_SetClientKeyValue, id, engfunc(EngFunc_GetInfoKeyBuffer, id), "model", iModelName);
copy(gPlayerModel[id], charsmax(gPlayerModel[]), iModelName);
gBitCustomModel[id] = true;
}


Проверял всё ок вроде, только один баг. Когда пишешь офф, модель не сразу снимается, а только на новый раунд. Можно вывести сообщение, якобы модель сменится в след. раунде. Модели заменишь на свои
быдлигкод psych.gif

Отредактировал: Nixon, - 5.7.2014, 20:22
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя explosiondj
сообщение 5.7.2014, 18:48
Сообщение #4
Стаж: 14 лет

Сообщений: 44
Благодарностей: 1
Полезность: < 0

Цитата(Nixon @ 5.7.2014, 19:25) *
Не?


Проверял всё ок вроде, только один баг. Когда пишешь офф, модель не сразу снимается, а только на новый раунд. Можно вывести сообщение, якобы модель сменится в след. раунде. Модели заменишь на свои
быдлигкод psych.gif


нужно вот так
formatex(iMenu, charsmax(iMenu), "Легкий \r[BLUE-MODEL & RED-MODEL]");
menu_additem(Menu, iMenu, "1");
formatex(iMenu, charsmax(iMenu), "Сложный \r[Standart models]");
menu_additem(Menu, iMenu, "2");

Можно так отредактировать и что бы это работало по такому принципу?


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nixon
сообщение 5.7.2014, 18:58
Сообщение #5


Стаж: 12 лет

Сообщений: 399
Благодарностей: 192
Полезность: 589

Цитата(explosiondj @ 5.7.2014, 20:48) *
нужно вот так
formatex(iMenu, charsmax(iMenu), "Легкий \r[BLUE-MODEL & RED-MODEL]");
menu_additem(Menu, iMenu, "1");
formatex(iMenu, charsmax(iMenu), "Сложный \r[Standart models]");
menu_additem(Menu, iMenu, "2");

Можно так отредактировать и что бы это работало по такому принципу?


Код:
/* [CREDITS] */
/* set model by freedo.m */

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN_NAME "hz"
#define PLUGIN_VERS "1.0"
#define PLUGIN_AUTH "NIXON"

#pragma semicolon 1;

new const gPlayerModelDir[][] = {
"sas",
"terror"
};

new gPlayerModel[33][32];
new bool: gBitCustomModel[33];
new bool: gBitClientAccess[33];

public plugin_init() {
register_plugin(PLUGIN_NAME, PLUGIN_VERS, PLUGIN_AUTH);

RegisterHam(Ham_Spawn, "player", "HamPlayerSpawn", 1);

register_forward(FM_SetClientKeyValue, "ForwardSetClient", 0);

register_clcmd("say /off", "ClCmd_Off");
}

public plugin_precache() {
precache_model("models/player/sas/sas.mdl");
precache_model("models/player/terror/terror.mdl");
}

public client_putinserver(id)
gBitClientAccess[id] = true;

public client_disconnect(id) {
gBitCustomModel[id] = false;
gBitClientAccess[id] = false;
}

public HamPlayerSpawn(id) {
if(!is_user_connected(id) || !is_user_alive(id))
return HAM_IGNORED;

Cmd_Menu(id);

return HAM_IGNORED;
}

public ForwardSetClient(id, const iInfoBuffer[], const iKey[]) {
if(gBitCustomModel[id] && equal(iKey, "model")) {
static iCurrentModel[32];
fnGetPlayerModel(id, iCurrentModel, charsmax(iCurrentModel));

if(!equal(iCurrentModel, gPlayerModel[id]))
fnSetPlayerModel(id, gPlayerModel[id]);

return FMRES_SUPERCEDE;
}

return FMRES_IGNORED;
}

public ClCmd_Off(id) {
if(gBitClientAccess[id])
gBitCustomModel[id] = false;
}

public Cmd_Menu(id) {
static iMenu[256];
formatex(iMenu, charsmax(iMenu), "Выберите уровень сложности:");
new Menu = menu_create(iMenu, "handled_Menu");

formatex(iMenu, charsmax(iMenu), "Легкий \r[BLUE-MODEL & RED-MODEL]");
menu_additem(Menu, iMenu, "1");
formatex(iMenu, charsmax(iMenu), "Стандарт");
menu_additem(Menu, iMenu, "2");

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

public handled_Menu(id, menu, item) {
new iData[6], iName[64], iAccess, iCallBack;
menu_item_getinfo(menu, item, iAccess, iData, charsmax(iData), iName, charsmax(iName), iCallBack);
new iKeys = str_to_num(iData);

if(!gBitClientAccess[id])
return PLUGIN_HANDLED;

set_hudmessage(255, 255, 255, -1.0, -1.0, 0, 6.0, 10.0);
show_hudmessage(id, "Чтобы вернуть предыдущую модель, пропишите /off");

switch(iKeys) {
case 1: {
client_print(id, print_chat, "Вы выбрали легкий режим!");
fnSetPlayerModel(id, gPlayerModelDir[random_num(0, 1));
}
case 2: {
client_print(id, print_chat, "Вы выбрали сложный режим!");
}
}

return PLUGIN_HANDLED;
}

fnGetPlayerModel(id, iModel[], iLen)
engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, id), "model", iModel, iLen);

fnSetPlayerModel(id, const iModelName[]) {
engfunc(EngFunc_SetClientKeyValue, id, engfunc(EngFunc_GetInfoKeyBuffer, id), "model", iModelName);
copy(gPlayerModel[id], charsmax(gPlayerModel[]), iModelName);
gBitCustomModel[id] = true;
}


Вот

Отредактировал: Nixon, - 5.7.2014, 20:23
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 5.7.2014, 19:10
Сообщение #6
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Код
#define PLUGIN_AUTH        "NIXON

С чего это чужой код вдруг твоим стал? Не надо так.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nixon
сообщение 5.7.2014, 19:14
Сообщение #7


Стаж: 12 лет

Сообщений: 399
Благодарностей: 192
Полезность: 589

Цитата(Safety1st @ 5.7.2014, 21:10) *
Код
#define PLUGIN_AUTH        "NIXON

С чего это чужой код вдруг твоим стал? Не надо так.

Ну почему чужой sad.gif Я же написал, что код для моделей не мой
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 5.7.2014, 20:10
Сообщение #8
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Прости, перепутал чуток и проглядел присутствие credits blush.gif

Боюсь только, что ТС хотел иной плагин.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nixon
сообщение 5.7.2014, 20:12
Сообщение #9


Стаж: 12 лет

Сообщений: 399
Благодарностей: 192
Полезность: 589

Цитата(Safety1st @ 5.7.2014, 22:10) *
Прости, перепутал чуток и проглядел присутствие credits blush.gif

Боюсь только, что ТС хотел иной плагин.

Да, я сначала не так прочитал. Но сейчас вроде всё ок. Если "Легкий" то белые\красные модели(можно поставить), если "Стандарт", то стандарт. Хотя, про "Стандарт" не понял. Вроде, если СТ то СТ модели, если Т, то Т.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 5.7.2014, 20:18
Сообщение #10


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Nixon, по просьбе Trollface:
Цитата
напиши Nixon:
Код:
RegisterHam(Ham_Spawn, "player", "HamPlayerSpawn");

->
Код:
RegisterHam(Ham_Spawn, "player", "HamPlayerSpawn", 1);


Код:
set_task(0.2, "Cmd_Menu", id);

->
Код:
Cmd_Menu(id);

пусть не говнокодит:D
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Nixon
сообщение 5.7.2014, 20:21
Сообщение #11


Стаж: 12 лет

Сообщений: 399
Благодарностей: 192
Полезность: 589

Цитата(Bloo @ 5.7.2014, 22:18) *
Nixon, по просьбе Trollface:

Блин sad.gif Забыл единичку. А я то думаю, почему сразу то меню не выводит psych.gif
Пост редактнул
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 5.7.2014, 20:24
Сообщение #12


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Nixon,
Цитата(trollface)
пост поправил, а говнокод не убрал:D
Код:
set_task(0.2, "Cmd_Menu", id);
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nixon
сообщение 5.7.2014, 20:25
Сообщение #13


Стаж: 12 лет

Сообщений: 399
Благодарностей: 192
Полезность: 589

Цитата(Bloo @ 5.7.2014, 22:24) *
Nixon,


Убрал же sad.gif

ps. пасибок 1337
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя explosiondj
сообщение 5.7.2014, 23:14
Сообщение #14
Стаж: 14 лет

Сообщений: 44
Благодарностей: 1
Полезность: < 0

Цитата(Nixon @ 5.7.2014, 21:25) *
Убрал же sad.gif

ps. пасибок 1337


На 102 строке ошибка со знакими, не компилируется, сам потыкал не выходит cray.gif

Отредактировал: explosiondj, - 5.7.2014, 23:26
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 5.7.2014, 23:45
Сообщение #15
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Цитата(Safety1st @ 5.7.2014, 19:39) *
Тут модели без нагрузки ставить - большая сложность. А с нагрузкой с помощью AddToFullPack - глупое расходование кучи ресурсов.

Через AddToFullPack не получится сделать, нужно такому игроку (на лёгком уровне) посылать setinfo других игроков с изменённым ключом model.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя explosiondj
сообщение 5.7.2014, 23:58
Сообщение #16
Стаж: 14 лет

Сообщений: 44
Благодарностей: 1
Полезность: < 0

Цитата(Nixon @ 5.7.2014, 21:25) *
Убрал же sad.gif

ps. пасибок 1337


Получилось, тестю. Если что отпишу.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя explosiondj
сообщение 6.7.2014, 0:24
Сообщение #17
Стаж: 14 лет

Сообщений: 44
Благодарностей: 1
Полезность: < 0

Цитата(Nixon @ 5.7.2014, 21:25) *
Убрал же sad.gif

ps. пасибок 1337


Не работает(((((((( Какие то ошибки с тем, что он заменил мне модель на террористов, когда я сам кт и то совсем на не ту что ссылался
Код
precache_model("models/player/sas/sas2.mdl");
         precache_model("models/player/terror/terror2.mdl");

Что делааать(
И нужен не рандомный выбор красных и синих, нужно террористы-красные, кт-синие
И нужно что бы если игрок выбрал то на всю карту, а не каждый раунд спрашивать crazy.gif

Отредактировал: explosiondj, - 6.7.2014, 0:31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 6.7.2014, 1:10
Сообщение #18
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

explosiondj, предложенный плагин делает совсем другое.

Нужный метод предложил [WPMG]PRoSToTeM@.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя explosiondj
сообщение 6.7.2014, 1:32
Сообщение #19
Стаж: 14 лет

Сообщений: 44
Благодарностей: 1
Полезность: < 0

Цитата(Safety1st @ 6.7.2014, 2:10) *
explosiondj, предложенный плагин делает совсем другое.

Нужный метод предложил [WPMG]PRoSToTeM@.



А что же делает этот плагин? Я все равно не знаю как предложенный метот воплотить в жизнь(
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: