| 
 
 
	
		
		
			| Взрыв, обводка и невидимость для команды |  |  |  | 
| 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 |  |  |  |  |  
 |