Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Несколько вопросов. (Если повторился то кинте ссылку)
Несколько вопросов.
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
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Несколько вопросов. (Если повторился то кинте ссылку)
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск: