Пара вопросов по SourcePawn (CSS)

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #21
Костя Суворов,

PHP:
new maxent = GetMaxEntities();
decl String:sClassName[64], Float:ent_posVec[3];
for (new d = MaxClients; d < maxent; d++)
	{
		if (IsValidEdict(d) && IsValidEntity(d) && GetEdictClassname(d, sClassName, sizeof(sClassName)) &&
		(StrEqual(sClassName, "info_player_terrorist") || StrEqual(sClassName, "info_player_counterterrorist")))
		{
			GetEntPropVector(d, Prop_Data, "m_vecOrigin", ent_posVec);
			// В ent_posVec будут координаты
		}
	}
 

Костя Суворов

Участник
Сообщения
30
Реакции
10
Написал небольшой плагин для изменения гравитации у игрока. Получился такой вот код:
public OnPluginStart()
{
HookEvent("player_jump", player_jump);
}
public player_jump(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
if (GetClientTeam(client) == 2)
{
SetEntPropFloat(client, Prop_Data, "m_flGravity", 0.5);
}
}
Сам плагин работает прекрасно, но перестал работать LongJump в THC_RPG. Можно ли как-нибудь сделать, чтобы эти два плагина одновременно работали ? Или придется лезть в исходники thc_rpg, искать там отлов события и вписывать мои пару строк кода ?
 

Костя Суворов

Участник
Сообщения
30
Реакции
10
Как создать луч ?
Пытаюсь вот так:
TE_SetupBeamPoints(clientEyeVec,targetWepVec,precache_laser,0,0,66,0.5,1.0,10.0,0,0.0,colorsd,0);
TE_SendToAll();
Но так луч не появляется.
clientEyeVec и targetWepVec верные.
precache_laser прописан в OnMapStart() вот так:
precache_laser=PrecacheModel("materials/sprites/laserbeam.vmt");
Значения colorsd:
new colorsd[4]={255,0,0,127};

Что тут не так ?
 

Костя Суворов

Участник
Сообщения
30
Реакции
10
Может кто сказать, почему не срабатывает функция StartTouchPost ?
Вот код:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
new String:g_TNTModel[128];
public OnPluginStart()
{
RegConsoleCmd("sm_bomb", Command_bomb);
}


public OnMapStart()
{
g_TNTModel = "models/weapons/w_c4_planted.mdl";
PrecacheModel(g_TNTModel, true);
RegConsoleCmd("sm_bombs", Command_bomb);



}
public Action:Command_bomb(client, args)
{
if (!client)
{
return Plugin_Continue;
}

plant_mine(client);

return Plugin_Continue;
}

plant_mine(client)
{
if (IsClientInGame(client) && IsPlayerAlive(client) && GetClientTeam(client) > 1)
{
new Float:vOrigin[3];
GetClientEyePosition(client,vOrigin);
new ent;
ent = CreateEntityByName("prop_dynamic_override");
decl String:targetname[64], String:tmp[64];
FormatEx(targetname, sizeof(targetname), "bombs_%i", ent);
DispatchKeyValue(ent, "model", g_TNTModel);
DispatchKeyValue(ent, "physicsmode", "2");
DispatchKeyValue(ent, "massScale", "1.0");
DispatchKeyValue(ent, "targetname", targetname);
DispatchSpawn(ent);

SetEntProp(ent, Prop_Send, "m_usSolidFlags", 8);
SetEntProp(ent, Prop_Send, "m_CollisionGroup", 1);

TeleportEntity(ent, vOrigin, NULL_VECTOR, NULL_VECTOR);
SDKHook(ent, SDKHook_StartTouchPost, StartTouchPost);
PrintToChat(client, "plant!");


}
}

public StartTouchPost(entity, other)
{
PrintToChatAll("Bla-bla-bla");

}
 

FrozDark

Участник
Сообщения
1,769
Реакции
2,050
Может кто сказать, почему не срабатывает функция StartTouchPost ?
Вот код:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
new String:g_TNTModel[128];
public OnPluginStart()
{
RegConsoleCmd("sm_bomb", Command_bomb);
}


public OnMapStart()
{
g_TNTModel = "models/weapons/w_c4_planted.mdl";
PrecacheModel(g_TNTModel, true);
RegConsoleCmd("sm_bombs", Command_bomb);



}
public Action:Command_bomb(client, args)
{
if (!client)
{
return Plugin_Continue;
}

plant_mine(client);

return Plugin_Continue;
}

plant_mine(client)
{
if (IsClientInGame(client) && IsPlayerAlive(client) && GetClientTeam(client) > 1)
{
new Float:vOrigin[3];
GetClientEyePosition(client,vOrigin);
new ent;
ent = CreateEntityByName("prop_dynamic_override");
decl String:targetname[64], String:tmp[64];
FormatEx(targetname, sizeof(targetname), "bombs_%i", ent);
DispatchKeyValue(ent, "model", g_TNTModel);
DispatchKeyValue(ent, "physicsmode", "2");
DispatchKeyValue(ent, "massScale", "1.0");
DispatchKeyValue(ent, "targetname", targetname);
DispatchSpawn(ent);

SetEntProp(ent, Prop_Send, "m_usSolidFlags", 8);
SetEntProp(ent, Prop_Send, "m_CollisionGroup", 1);

TeleportEntity(ent, vOrigin, NULL_VECTOR, NULL_VECTOR);
SDKHook(ent, SDKHook_StartTouchPost, StartTouchPost);
PrintToChat(client, "plant!");


}
}

public StartTouchPost(entity, other)
{
PrintToChatAll("Bla-bla-bla");

}

https://forums.alliedmods.net/showthread.php?t=170143

выставляй так
PHP:
SetEntProp(Prop, Prop_Send, "m_usSolidFlags", 12); //FSOLID_NOT_SOLID|FSOLID_TRIGGER
SetEntProp(Prop, Prop_Data, "m_nSolidType", 6); // SOLID_VPHYSICS
SetEntProp(Prop, Prop_Send, "m_CollisionGroup", 1); //COLLISION_GROUP_DEBRIS
 
Сверху Снизу