Определение координат перед прицелом

Тема в разделе "Программирование / Скриптинг", создана пользователем Ganibal95, 11 авг 2013.

  1. Ganibal95

    Ganibal95

    Сообщения:
    52
    Симпатии:
    0
    Здравствуйте, как можно определить координаты перед центром прицела.
    у меня есть который двигает объект вперед игрока, но объект не реагирует на FOV игрока (Верх-Низ)

    Вот код который у меня есть.
    PHP:
    stock PosSpawnObj(client,Float:EyePos[3],Float:distance=150.0,Float:fov=0.0Float:pos=0.0){
        
    decl Float:EyeAngles[3]; 
        
    GetClientEyePosition(clientEyePos); 
        
    GetClientEyeAngles(clientEyeAngles); 
        
    decl Float:angles[3], Float:direction[3];
        
    angles[1] = EyeAngles[1] + pos;
        
    GetAngleVectors(anglesdirectionNULL_VECTORNULL_VECTOR); 
        
    EyePos[0] = EyePos[0] + direction[0] * distance
        
    EyePos[1] = EyePos[1] + direction[1] * distance;
        
    EyePos[2] += fov;
    }
     
  2. cors

    cors

    Сообщения:
    41
    Симпатии:
    3
    есть готовый плагин, вот http://world-source.ru/forum/118-2463-1
     
  3. Ganibal95

    Ganibal95

    Сообщения:
    52
    Симпатии:
    0
    cors, Конечно мне это тоже нужно было =) Спасибо.

    Но это не совсем то, нужно объект создать прям перед прицелом, а не куда прицел смотрит.

    Добавлено через 2 минуты
    Объясню по подробнее, я делаю подствольные гранаты... Которые вылетают при нажатии допустим на E (IN_USE). При нажатии появляется этот самый объект перед прицелом, отодвинувшист от игрока на 40.0 игровых сантиметров. и делается бросок объекта...

    Так вот. Как получить координаты прямо перед прицелом отодвинушись от игрока на 40.0 игровых сантиметров.

    Заранее спасибо!
     
    Последнее редактирование: 11 авг 2013
  4. Reiko1231

    Reiko1231 AlexTheRegent

    Сообщения:
    237
    Симпатии:
    569
    Кароче как-то так:
    Код:
    #include <sdktools>
    
    public OnPluginStart()
    {
    	RegConsoleCmd("test", Command_Test);
    }
    public OnMapStart()
    {
    	PrecacheModel("models/items/healthkit.mdl");
    }
    
    public Action:Command_Test(iClient, args)
    {
    	decl Float:fOrigin[3], Float:fAngles[3];
    	GetClientEyePosition( iClient, fOrigin );
    	GetClientEyeAngles( iClient, fAngles );
    	TR_TraceRayFilter( fOrigin, fAngles, MASK_SOLID, RayType_Infinite, TRDontHitSelf, iClient );
    	if ( TR_DidHit( INVALID_HANDLE ) )
    	{
    		// TR_GetEndPosition( fOrigin, INVALID_HANDLE );
    		new iEntity = CreateEntityByName("prop_physics_override");
    		DispatchKeyValue(iEntity, "model", "models/items/healthkit.mdl");
    		// DispatchKeyValueVector(iEntity, "origin", fOrigin);
    		// DispatchKeyValue(iEntity, "solid", "6");
    		DispatchSpawn(iEntity);
    		PrintToChatAll("Spawn origin: (%f;%f;%f)", fOrigin[0], fOrigin[1], fOrigin[2]);
    		
    		new iEnt = CreateEntityByName("light_dynamic");  
    		DispatchKeyValue(iEnt, "_light", "255 0 0");  
    		DispatchKeyValue(iEnt, "brightness", "10");  
    		DispatchKeyValueFloat(iEnt, "spotlight_radius", 360.0);  
    		DispatchKeyValueFloat(iEnt, "distance", 50.0);  
    		DispatchKeyValue(iEnt, "style", "0");
    		DispatchSpawn(iEnt);
    		
    		new String:szTarget[32];
    		Format(szTarget, sizeof(szTarget), "lighthealthkit_%d", iEntity);
    		DispatchKeyValue(iEntity, "targetname", szTarget);
    		SetVariantString(szTarget);
    		AcceptEntityInput(iEnt, "SetParent");
    		AcceptEntityInput(iEnt, "TurnOn");
    		
    		new Float:fVelocity[3];
    		GetAngleVectors(fAngles, fVelocity, NULL_VECTOR, NULL_VECTOR);
    		ScaleVector(fVelocity, 1000.0); // 1000 - сила толкания, меняя её, менять придется и 0.1 (подбирать подходящее значение).
    		fOrigin[2] -= 4.0;
    		fVelocity[2] = 0.0;
    		
    		fOrigin[0] = fOrigin[0] + (fVelocity[0] * 0.1); // менять 0.1 для того, чтобы двигать созданный объект от начала (глаз игроков).
    		fOrigin[1] = fOrigin[1] + (fVelocity[1] * 0.1); // менять 0.1 для того, чтобы двигать созданный объект от начала (глаз игроков).
    		
    		TeleportEntity(iEntity, fOrigin, NULL_VECTOR, fVelocity);
    		
    		CreateTimer(5.0, Timer_BlowUpHealthkit, iEntity);
    	}
    	
    	return Plugin_Handled;
    }
    
    public Action:Timer_BlowUpHealthkit(Handle:hTimer, any:iEntity)
    {
    	decl Float:fOrigin[3];
    	GetEntPropVector(iEntity, Prop_Send, "m_vecOrigin", fOrigin);
    	PrintToChatAll("BlowUp Origin : (%f;%f;%f)", fOrigin[0], fOrigin[1], fOrigin[2]);
    	AcceptEntityInput(iEntity, "KillHierarchy");
    }
    
    public bool:TRDontHitSelf(iEntity, mask, any:data)
    {
    	return iEntity != data;
    }
     
    Ganibal95 нравится это.
  5. cors

    cors

    Сообщения:
    41
    Симпатии:
    3
    Как раз искал такой плагин для зомби сервера,не выложишь потом его сюда?)
     
  6. Ganibal95

    Ganibal95

    Сообщения:
    52
    Симпатии:
    0
    cors, достаточно хороший пример привел... Reiko1231
     
  7. foxter

    foxter

    Сообщения:
    2
    Симпатии:
    0
  8. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.995
    Симпатии:
    2.990
    Надо моск включить http://world- source .ru/forum/118-2463-1
    Пробелы уберешь