Несколько вопросов.
| |
pro-health
|
Дата: Воскресенье, 27.07.2014, 17:44:22 | Сообщение # 1 |
|
Сообщений: 188
Репутация: 5 [ +/- ]
|
|
Всем привет. У меня несколько вопросов: 1. Как ограничить количество использований чего-либо за раунд? (Команды, гранат и т.д, т.п) 2. Как изменить #define SCALE "0.0" с 0.0 на 1.0 например когда админ написал scale? 3. Как в меню сделать не активные пункты (серого цвета)? 4. Как правильно пользоваться new Handle:g_iHealth = INVALID_HANDLE;? 5. Чё такое #pragma? 6. Что активирует #pragma semicolon 1? 7. Как в меню (не панели) включить кнопки назад и далее? Вроде так: Код // Menu selections const MENU_KEY_AUTOSELECT = 7 const MENU_KEY_BACK = 7 const MENU_KEY_NEXT = 8 const MENU_KEY_EXIT = 9
Сообщение отредактировал pro-health - Воскресенье, 27.07.2014, 17:52:19 |
|
| |
BarD
|
Дата: Воскресенье, 27.07.2014, 18:27:29 | Сообщение # 2 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
1) можно просто создать массив с игроками, и при заходе игрока присваивать ему количество использований. А при использовании команды вычитать у игрока 1 использование Пример ограничивания использования команды Код new use[MAXPLAYERS +1];
public OnPluginStart() { RegConsoleCmd("sm_command", Cmd); }
public OnClientPutInServer(client) { use[client] = 5; // Количество использований } public Action:Cmd(client, args) { if (client && use[client]>0) { use[client]--;// Когда использовали, отнимаем у этого игрока 1 попытку PrintToChat(client, "Вы использовали команду. У вас осталось %d использований", use[client]); } else PrintToChat(client, " У вас закончились попытки использования"); }
2) думаю, что #define SCALE "1.0"
3) AddMenuItem(menu, info, "Text", ITEMDRAW_DISABLED);
4) INVALID_HANDLE показывает, что переменная неактивна или не получилось присвоить ей значение. Например Код new Handle:menu = CreateMenu(Menu_Select); if (menu == INVALID_HANDLE)//Если меню создать не получилось PrintToChatAll("Создать меню не получилось, не фортануло");
5) Это способ активации параметра чтения твоего скрипта.
6) Это даёт понять компилятору, что после каждого действия должна стоять ; Ещё есть #pragma tabsize 0 . Эта строчка убирает при компиляции предупреждения о свободных отступах.
7) Если на странице больше 7 итемов, то они включаются автоматически. Принудительно можно включить кнопки Выход и Назад. SetMenuExitButton(menu, true); и SetMenuExitBackButton(menu, true);
Сообщение отредактировал BarD - Воскресенье, 27.07.2014, 18:29:42 |
|
| |
pro-health
|
Дата: Воскресенье, 27.07.2014, 18:38:30 | Сообщение # 3 |
|
Сообщений: 188
Репутация: 5 [ +/- ]
|
|
Цитата 2) думаю, что #define SCALE "1.0"
А как её изменить для игрока если он вип?
|
|
| |
BarD
|
Дата: Воскресенье, 27.07.2014, 18:45:37 | Сообщение # 4 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Смотря, где она используется
|
|
| |
pro-health
|
Дата: Воскресенье, 27.07.2014, 18:48:26 | Сообщение # 5 |
|
Сообщений: 188
Репутация: 5 [ +/- ]
|
|
Цитата BarD ( ) Смотря, где она используется Код #include <sdktools> #include <sdkhooks>
#define EFFECT_MODEL "sprites/redglow1.vmt" #define SCALE "0.0"
/*if (GetUserFlagBits(client) & ADMFLAG_CUSTOM2) { #define SCALE "0.5" )*/
public OnEntityCreated(iEntity, const String:sClassName[]) {
if ( StrEqual(sClassName, "weapon_m4a1") ) { new iGlowEntity = CreateEntityByName("env_glow"); DispatchKeyValue(iGlowEntity, "model", EFFECT_MODEL); DispatchKeyValue(iGlowEntity, "rendermode", "3"); // свечение DispatchKeyValue(iGlowEntity, "scale", SCALE); // размер свечения DispatchKeyValue(iGlowEntity, "renderamt", "255"); // прозрачность DispatchKeyValue(iGlowEntity, "rendercolor", "255 0 0"); // цвет
if ( DispatchSpawn(iGlowEntity) ) { decl String:sTargetName[32], Float:fOrigin[3]; Format(sTargetName, sizeof(sTargetName) - 1, "weapon_m4a1_%d", iGlowEntity); DispatchKeyValue(iEntity, "targetname", sTargetName); GetEntPropVector(iEntity, Prop_Data, "m_vecOrigin", fOrigin);
SetVariantString(sTargetName); AcceptEntityInput(iGlowEntity, "SetParent");
TeleportEntity(iGlowEntity, fOrigin, NULL_VECTOR, NULL_VECTOR); AcceptEntityInput(iGlowEntity, "ShowSprite"); AcceptEntityInput(iGlowEntity, "TurnOn"); } } }
Сообщение отредактировал pro-health - Воскресенье, 27.07.2014, 18:48:44 |
|
| |
BarD
|
Дата: Воскресенье, 27.07.2014, 18:53:07 | Сообщение # 6 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Вообще, #define - это просто сокращает некоторые элементы, присваивает значения, которые будут часто использоваться, чтобы не писать много по 100 раз. Это можно заменить переменной.
new Float:scale = 0.0; new Float:scalevip = 1.0;
И там, где для простых игроков, используйте scale, а для випов - scalevip
Сообщение отредактировал BarD - Воскресенье, 27.07.2014, 18:57:16 |
|
| |
pro-health
|
Дата: Воскресенье, 27.07.2014, 18:58:19 | Сообщение # 7 |
|
Сообщений: 188
Репутация: 5 [ +/- ]
|
|
Цитата BarD ( ) Ну, так у тебя же тут написано
Цитата /*if (GetUserFlagBits(client) & ADMFLAG_CUSTOM2) { #define SCALE "0.5" )*/
Код weapon-glow_vip.inc(7) : error 010: invalid function or declaration weapon-glow_vip.inc(9) : warning 201: redefinition of constant/macro (symbol "SCALE") weapon-glow_vip.inc(10) : error 054: unmatched closing brace ("}") Добавлено (27.07.2014, 18:58:19) --------------------------------------------- Изменил не та скобка была. weapon-glow_vip.inc(7) : error 010: invalid function or declaration weapon-glow_vip.inc(9) : warning 201: redefinition of constant/macro (symbol "SCALE") weapon-glow_vip.inc(10) : error 054: unmatched closing brace ("}")
Сообщение отредактировал pro-health - Воскресенье, 27.07.2014, 18:57:53 |
|
| |
BarD
|
Дата: Воскресенье, 27.07.2014, 19:04:29 | Сообщение # 8 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
В твоём случае нельзя сделать, чтобы у випов был scale 1.0, потому что в этом блоке не упоминается индекс игрока, который держит m4a1. Следовательно, нельзя проверить, вип ли игрок и понять, нужна ли тут переменная scale или scalevip.
|
|
| |
pro-health
|
Дата: Воскресенье, 27.07.2014, 19:14:43 | Сообщение # 9 |
|
Сообщений: 188
Репутация: 5 [ +/- ]
|
|
BarD, а как это исправить?
|
|
| |
BarD
|
Дата: Воскресенье, 27.07.2014, 19:22:42 | Сообщение # 10 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Нужно узнать, кто держит оружие с таким индексом. Тогда его можно будет проверить на наличие випки и дать ему scale, какой нужно
|
|
| |
pro-health
|
Дата: Воскресенье, 27.07.2014, 19:32:20 | Сообщение # 11 |
|
Сообщений: 188
Репутация: 5 [ +/- ]
|
|
BarD, а пример можно?
|
|
| |
BarD
|
Дата: Воскресенье, 27.07.2014, 19:39:56 | Сообщение # 12 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
pro-health, я не знаю, как это сделать
|
|
| |
Naykon
|
Дата: Воскресенье, 27.07.2014, 19:54:09 | Сообщение # 13 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
2. Как изменить #define SCALE "0.0" с 0.0 на 1.0 например когда админ написал scale?
#define - Макрос а макросы все const. Ответ никак!
Сообщение отредактировал Naykon - Воскресенье, 27.07.2014, 19:54:35 |
|
| |
pro-health
|
Дата: Понедельник, 28.07.2014, 12:30:51 | Сообщение # 14 |
|
Сообщений: 188
Репутация: 5 [ +/- ]
|
|
Снова привет. Такая ошибка почти всегда Код overlay.sp(6) : error 100: function prototypes do not match overlay.sp(14) : error 100: function prototypes do not match
Код брал от сюда даже: http://world-source.ru/forum/102-2404-17285-16-1349694952
|
|
| |
BarD
|
Дата: Понедельник, 28.07.2014, 13:20:51 | Сообщение # 15 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Эта ошибка означает, что ты в функции какой-то аргумент забыл. Например, вместо Код SetEntityGravity(client, 1.0); пишешь Код SetEntityGravity(client);
Просмотри все функции по параметрам и найди ошибки
Сообщение отредактировал BarD - Понедельник, 28.07.2014, 13:21:22 |
|
| |
|