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

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

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Личные Пропсы.
Личные Пропсы.
Sunday Дата: Суббота, 23.02.2013, 19:48:39 | Сообщение # 1
Сообщений: 186
Репутация: 24 [ +/- ]
Парни подскажите, пишу меню и когда я создаю через меню Props то другой игрок может его удолить, как сделать так, когда ты создаешь что то то ни кто другой не может выполнить с пропом ни каких действий. Сделал урезанный пример что бы было понятно:

Код
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>

new String:client_name[64];
new String:modelname[64];

new House_Models_three = 0;

public OnPluginStart()
{
  RegConsoleCmd("sm_cmd", ConsoleCmd);
}

public Action:ConsoleCmd(client, args)
{
  if (client < 1 || client > MaxClients)
   return Plugin_Handled;

  new Handle:menu = CreateMenu(MenuHandler1);
  SetMenuTitle(menu, "Меню");
  AddMenuItem(menu, "Prop Menu", "Prop Menu");
  SetMenuExitButton(menu, true);
  SetMenuExitBackButton(menu, false);
  DisplayMenu(menu, client, 0);

  return Plugin_Handled;
}

public MenuHandler1(Handle:menu, MenuAction:action, client, param2)
{
  if (action == MenuAction_Select)
  {
   decl String:info[64];
   GetMenuItem(menu, param2, info, sizeof(info));
   GetClientName(client, client_name, sizeof(client_name));

   if(strcmp(info, "Prop Menu") == 0)
   {
    new Handle:propmenu = CreateMenu(MenuHandler1);
    SetMenuTitle(propmenu, "Prop Menu");
    AddMenuItem(propmenu, "Delete Prop", "Delete Prop");
    AddMenuItem(propmenu, "Static Props", "Static Props");
    SetMenuExitBackButton(propmenu, true);
    DisplayMenu(propmenu, client, 0);
   }

   if(strcmp(info, "Delete Prop") == 0)
   {
    decl String:classname[64];
    new DeleteIndex = GetClientAimTarget(client, false);
    if (DeleteIndex != -1)
    {
     GetEdictClassname(DeleteIndex, classname, sizeof(classname));
    }
    if ((DeleteIndex != -1) && (StrEqual(classname, "prop_physics") || StrEqual(classname, "prop_physics_override") || StrEqual(classname, "prop_dynamic") || StrEqual(classname, "prop_dynamic_override") || StrEqual(classname, "prop_physics_multiplayer") || StrEqual(classname, "prop_dynamic_ornament") || StrEqual(classname, "prop_static")))
    {
     AcceptEntityInput(DeleteIndex, "Kill", -1, -1, 0);
     PrintToChat(client, "[SM] %s deleted a prop", client_name);
    }
    if ((DeleteIndex == -1) || !(StrEqual(classname, "prop_physics") || StrEqual(classname, "prop_physics_override") || StrEqual(classname, "prop_dynamic") || StrEqual(classname, "prop_dynamic_override") || StrEqual(classname, "prop_physics_multiplayer") || StrEqual(classname, "prop_dynamic_ornament") || StrEqual(classname, "prop_static")))
    {
     PrintToChat(client, "[SM] No entity found or invalid entity");
    }
    new Handle:propmenu = CreateMenu(MenuHandler1);
    SetMenuTitle(propmenu, "Prop Menu");
    AddMenuItem(propmenu, "Prop Menu", "<--");
    AddMenuItem(propmenu, "Delete Prop", "Delete Prop");
    DisplayMenu(propmenu, client, 0);
   }

   if(strcmp(info, "Static Props") == 0)
   {
    new Handle:Combine = CreateMenu(MenuHandler1);
    SetMenuTitle(Combine, "Static Props Menu.");
    AddMenuItem(Combine, "Prop Menu", "<--");
    AddMenuItem(Combine, "House Models", "House Models");
    DisplayMenu(Combine, client, 0);
   }

   if(strcmp(info, "House Models") == 0)
   {
    new Handle:Combine = CreateMenu(MenuHandler1);
    SetMenuTitle(Combine, "House Models Menu.");
    AddMenuItem(Combine, "Static Props", "<--");
    AddMenuItem(Combine, "fallhouse", "fallhouse 2$");
    DisplayMenu(Combine, client, 0);
   }

   if(strcmp(info, "fallhouse") == 0)
   {
    House_Models_three = 1;
    PrecacheModel("models/Z-O-M-B-I-E/container_01.mdl",true);
    modelname = "models/Z-O-M-B-I-E/container_01.mdl";
    prop_dynamic_create(client);
    new Handle:Combine = CreateMenu(MenuHandler1);
    SetMenuTitle(Combine, "House Models Menu.");
    AddMenuItem(Combine, "House Models", "<--");
    AddMenuItem(Combine, "fallhouse", "fallhouse");
    DisplayMenu(Combine, client, 0);
   }
  }

  else if (action == MenuAction_Cancel)
  {
   if (param2 == MenuCancel_ExitBack)
   {
    RemoveAllMenuItems(menu);
    AddMenuItem(menu, "Weapon", "Weapon");
    AddMenuItem(menu, "Aammunition", "Aammunition");
    AddMenuItem(menu, "Infirmary", "Infirmary");
    AddMenuItem(menu, "Prop Menu", "Prop Menu");
    SetMenuExitButton(menu, true);
    SetMenuExitBackButton(menu, false);
    DisplayMenu(menu, client, 0);
   }
  }
}

public bool:TraceRayDontHitSelf(entity, mask, any:data)
{
  if (entity == data)
  {
   return false;
  }
  return true;
}

public prop_dynamic_create(client)
{
  decl Float:VecOrigin[3];
  decl Float:VecAngles[3];
  decl Float:normal[3];
  new prop = CreateEntityByName("prop_dynamic_override");
  DispatchKeyValue(prop, "model", modelname);
  GetClientEyePosition(client, VecOrigin);
  GetClientEyeAngles(client, VecAngles);
  TR_TraceRayFilter(VecOrigin, VecAngles, MASK_SOLID, RayType_Infinite, TraceRayDontHitSelf, client);
  TR_GetEndPosition(VecOrigin);
  TR_GetPlaneNormal(INVALID_HANDLE, normal);
  GetVectorAngles(normal, normal);
  normal[0] += 90.0;

  if (House_Models_three == 1)
  {
   VecOrigin[2] += 65.0;
   House_Models_three = 0;
  }

  DispatchKeyValue(prop, "StartDisabled", "false");
  DispatchKeyValue(prop, "Solid", "6");
  DispatchKeyValue(prop, "spawnflags", "8");
  SetEntProp(prop, Prop_Data, "m_CollisionGroup", 5);
  TeleportEntity(prop, VecOrigin, normal, NULL_VECTOR);
  DispatchSpawn(prop);
  AcceptEntityInput(prop, "EnableCollision");
  AcceptEntityInput(prop, "TurnOn", prop, prop, 0);

  GetClientName(client, client_name, sizeof(client_name));

  return 0;
}

Гости не могут скачивать файлы
 
panorama Дата: Пятница, 16.08.2013, 06:51:18 | Сообщение # 2
Сообщений: 203
Репутация: 2 [ +/- ]
Вопрос еще актуален ?
Если да то к каждому пропу можно установить владельца что то типа
Код

SetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity", client);

и при выполнении каких то действий
Код

new client = GetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity");

Проверять на владельца .

Надеюсь что помог )
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Личные Пропсы.
  • Страница 1 из 1
  • 1
Поиск: