Взрыв, обводка и невидимость для команды
| |
BarD
|
Дата: Среда, 30.04.2014, 17:34:36 | Сообщение # 1 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Меня мучают 3 вопроса: 1) Как создать взрыв на месте пропа, например, бочки (не взрывающаяся), при стрельбе по нему? 2) Как создать обводку вокруг человека, на которого смотришь, как в доте 2 или l4d2? 3) Можно ли сделать невидимость игроку так, чтобы его команда его видела, а противоположная нет?
Если можете, то помогите кодом, пожалуйста.
|
|
| |
ThRunningMan
|
Дата: Среда, 30.04.2014, 21:51:32 | Сообщение # 2 |
|
Сообщений: 140
Репутация: 12 [ +/- ]
|
|
2) Точно нельзя никак, в лефте эта функция прост овстроена и там можн описать плагины просто используя готовую функцию 3) Можно Код public OnClientPutInServer(client) { SDKHook(client, SDKHook_SetTransmit, Hook_SetTransmitPlayer); } public Action:Hook_SetTransmitPlayer(client, entity) { if(client == entity) { return Plugin_Continue; } if((0 < entity <= MaxClients) && IsClientInGame(entity) && IsClientInGame(client) && IsClientIndex(client) && IsClientIndex(entity)) { if(IsPlayerAlive(entity) && IsPlayerAlive(client)) { if((GetClientTeam(entity) == 3 && GetClientTeam(client) == 2 ) || (GetClientTeam(client) == 3 && GetClientTeam(entity) == 2)) return Plugin_Handled; } } return Plugin_Continue; } Добавлено (30.04.2014, 21:51:32) --------------------------------------------- На счет первого, тут несколкьо путей,например, можно создать отталкивающий тригер на месте бочки, воспроизвести звук взрыва, и отнять хп И кстати есть плагин который заменяет обычные бочки на взрывающиеся на карте, не помню как называется, но точно знаю есть сам тестил, поищи
|
|
| |
BarD
|
Дата: Четверг, 01.05.2014, 04:41:13 | Сообщение # 3 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Спасибо! А вот по поводу взрыва, можно как-то создать взрыв от гранаты? Имитировать как-то...
|
|
| |
Sallcom
|
Дата: Воскресенье, 09.11.2014, 22:28:45 | Сообщение # 4 |
|
Сообщений: 205
Репутация: 31 [ +/- ]
|
|
Цитата BarD ( ) А вот по поводу взрыва, можно как-то создать взрыв от гранаты? Имитировать как-то...
Создает взрыв там, куда ты смотришь, когда пишешь команду test. Код #include <sourcemod> #include <sdktools> #include <sdkhooks>
new iExpSprite;
public OnPluginStart(){ RegConsoleCmd("test", Command_Test); }
public OnMapStart(){ PrecacheSound("weapons/hegrenade/explode3.wav", true); iExpSprite = PrecacheModel("materials/sprites/zerogxplode.vmt", true); }
public Action:Command_Test(client, args){ decl Float:fPos[3], Float:fClientPos[3], Float:fDistance; GetClientAimPosition(client, fPos);
EmitAmbientSound("weapons/hegrenade/explode3.wav", fPos, client, SNDLEVEL_RAIDSIREN);
TE_SetupExplosion(fPos, iExpSprite, 10.0, 1, 0, 275, 160); TE_SendToAll(); for (new i = 1; i <= MaxClients; i++){ if (IsClientInGame(i) && IsPlayerAlive(i)){ GetClientAbsOrigin(i, fClientPos);
if((fDistance = GetVectorDistance(fClientPos, fPos)) <= 100.0) SDKHooks_TakeDamage(i, client, client, fDistance, DMG_GENERIC);//Урон, это fDistance, то есть в данном примере урон равен дистанции от взрыва до игрока. } } }
stock GetClientAimPosition(client, Float:fPos[3]){ decl Float:fAngles[3], Float:fPosition[3], Handle:hTrace; GetClientEyePosition(client, fPosition); GetClientEyeAngles(client, fAngles); hTrace = TR_TraceRayFilterEx(fPosition, fAngles, MASK_SOLID, RayType_Infinite, Get_PosFilter, client); TR_GetEndPosition(fPos, hTrace); CloseHandle(hTrace); }
public bool:Get_PosFilter(ent, mask, any:i) return i != ent;
Сообщение отредактировал Sallcom - Воскресенье, 09.11.2014, 23:19:24 |
|
| |
Naykon
|
Дата: Понедельник, 10.11.2014, 13:46:21 | Сообщение # 5 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Цитата BarD ( ) 2) Точно нельзя никак, в лефте эта функция прост овстроена и там можн описать плагины просто используя готовую функцию
Не согласен. Может стандартной функции и нет но можно изобрести велосипед.
Кодом не помогу (времени нет)но вот идея вполне реальна:
Ловим куда смотрит игрок_1. Если взгляд игрока_1 совпадает с позицией игрока_2 то получаем индекс игрока_2 и по индексу создаем круг вокруг него (типа маяка, чтоб визуально был похож на стабильный круг на 0.0001 сек), пока игрок_1 не отведет взор от игрока_2 круг будет стабильно мелькать.
|
|
| |
BarD
|
Дата: Понедельник, 10.11.2014, 14:18:19 | Сообщение # 6 |
|
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Sallcom, проблему решил еще в мае этого года) Спасибо. Naykon, это будет не обводка, а просто круг под игроком. Также, создание круга раз в 0.0001 сек серьезно понижает фпс. Такой метод не подходит. Спасибо.
|
|
| |
djded
|
Дата: Среда, 28.11.2018, 03:26:30 | Сообщение # 7 |
|
Сообщений: 19
Репутация: 0 [ +/- ]
|
|
Цитата Sallcom ( ) Создает взрыв там, куда ты смотришь, когда пишешь команду test. Подскажите что где в коде поменять что бы взрыв прямо на клиенте был(тоесть висит подарок, чел его берет и из подарка как бы взрыв этот)? хочу прикрутить этот плаг, к подаркам GIFTs :) уже есть подарок с заморозкой, поджиганием, випкой, обезоруживанием, респавном, выдачей опыта, хп и кредитов разных. Вот такой бы взрыв добавить и что бы урон где то можно было выставить, и что бы на ботах работало. Готов заплатить, адекватную цену:) Если поможете буду очень благодарен:)
Код #include <sourcemod> #include <sdktools> #include <sdkhooks>
new iExpSprite;
public OnPluginStart(){ RegConsoleCmd("rastagift", Command_Test); }
public OnMapStart(){ PrecacheSound("weapons/hegrenade/explode3.wav", true); iExpSprite = PrecacheModel("materials/sprites/zerogxplode.vmt", true); }
public Action:Command_Test(client, args){ decl Float:fPos[3], Float:fClientPos[3], Float:fDistance; GetClientAimPosition(client, fPos);
EmitAmbientSound("weapons/hegrenade/explode3.wav", fPos, client, SNDLEVEL_RAIDSIREN);
TE_SetupExplosion(fPos, iExpSprite, 10.0, 1, 0, 275, 160); TE_SendToAll();
for (new i = 1; i <= MaxClients; i++){ if (IsClientInGame(i) && IsPlayerAlive(i)){ GetClientAbsOrigin(i, fClientPos);
if((fDistance = GetVectorDistance(fClientPos, fPos)) <= 100.0) SDKHooks_TakeDamage(i, client, client, fDistance, DMG_GENERIC);//Урон, это fDistance, то есть в данном примере урон равен дистанции от взрыва до игрока. } } }
stock GetClientAimPosition(client, Float:fPos[3]){ decl Float:fAngles[3], Float:fPosition[3], Handle:hTrace; GetClientEyePosition(client, fPosition); GetClientEyeAngles(client, fAngles); hTrace = TR_TraceRayFilterEx(fPosition, fAngles, MASK_SOLID, RayType_Infinite, Get_PosFilter, client); TR_GetEndPosition(fPos, hTrace); CloseHandle(hTrace); }
public bool:Get_PosFilter(ent, mask, any:i) return i != ent;
Гости не могут скачивать файлы
|
Сообщение отредактировал djded - Среда, 28.11.2018, 19:23:12 |
|
| |
|