| 
				
				ReSizePlayer
				 |   |  
| 
pro-health
 | 
Дата: Вторник, 16.09.2014, 05:08:13 | Сообщение # 1 |  
  
  |  
Сообщений: 188
 
Репутация: 5 [ +/- ]
 |   
 | 
Играл на сервере у _Ws_ там линия за игроком.   Я хочу сделать что бы треил вкл. когда игроку изменили размер.   Вот код исправьте плиз.   Код #include <sourcemod>   #include <sdktools>   #include <cstrike>   #include <sdkhooks>   #include <entity> 
   #define    PrecacheModel("materials/sprites/laserbeam.vmt", bool:preload=false);       public OnPluginStart()   {    RegConsoleCmd("say_team", HookCommand);    RegConsoleCmd("say", HookCommand);   } 
   public Action:HookCommand(client,argc)    {     decl String:player[64],String:Hook_Command[32];     GetCmdArg(1,Hook_Command,sizeof(Hook_Command));     GetCmdArg(2,player,sizeof(player));         if(StrEqual(Hook_Command,"ac",false))     {      Menu(client);     }    } 
   Menu(client)   {        new Handle:hMenu = CreateMenu(Menu_handle);    SetMenuTitle(hMenu, "Выберите:Функцыю");        AddMenuItem(hMenu, "", "Дать обычный класс", 0);    AddMenuItem(hMenu, "", "Дать средний класс", 0);    AddMenuItem(hMenu, "", "Дать высший класс", 0);        DisplayMenu(hMenu, client, 0);     return 0;   } 
   public Menu_handle(Handle:hMenu,MenuAction:action,client,slot)   {    if(action==MenuAction_Select)    {     switch(slot)     {      case 0:      {       ResizePlayer0Target(client);      }      case 1:      {       ResizePlayerTarget(client);      }      case 2:      {       ResizePlayer2Target(client);      }     }    }        if(action==MenuAction_End)    {     CloseHandle(hMenu);    }   } 
   ResizePlayer0Target(client)    {     new Handle:Target_MenuResizePlayer0 = CreateMenu(UseResizePlayer0_handle);     SetMenuTitle(Target_MenuResizePlayer0, "Выберите Игрока:\n \n");     decl String:userid[15], String:name[32];     for (new i = 1; i <= MaxClients; i++)     {      if (IsClientInGame(i))      {       IntToString(GetClientUserId(i), userid, 15);       GetClientName(i, name, 32);       AddMenuItem(Target_MenuResizePlayer0, userid, name);      }     }     DisplayMenu(Target_MenuResizePlayer0, client, 0);    } 
   public UseResizePlayer0_handle(Handle:Target_MenuResizePlayer0, MenuAction:action, client, option)    {    if (action == MenuAction_End)     {      CloseHandle(Target_MenuResizePlayer0);      return;     }     if (action != MenuAction_Select) return;     decl String:userid[15];    new Float:vec[3];    vec[2] -= 1;    GetMenuItem(Target_MenuResizePlayer0, option, userid, 15);     new target = GetClientOfUserId(StringToInt(userid));     new hp = GetClientHealth(client);    if (target > 0)     {     if (IsClientInGame(client))     {          SetEntPropFloat(target, PropType:0, "m_flModelScale", 1.0, 0);       SetEntPropFloat(target, PropType:0, "m_flHeadScale", 5.0, 0);       SetEntProp(target, PropType:0, "m_iHealth", hp + 100, 4, 0);             PrintToChat(target, "\x0700ff09Админ \x070015ff%N \x0700ff09изменил ваш класс.", client);      PrintToChat(client, "\x0700ff09Игроку \x070015ff%N \x0700ff09изменён класс.", target);            Menu(client);      }     else     {      PrintToChat(client, "\x0700ff09Игрок \x070015ff%N \x0700ff09мёртв или в наблюдени выполнить действие не возможно", target);      Menu(client);     }    }     else PrintToChat(client, "\x07131713Игрок не найден (вышел с сервера)");     Menu(client);    } 
   ResizePlayerTarget(client)    {     new Handle:Target_MenuResizePlayer = CreateMenu(UseResizePlayer_handle);     SetMenuTitle(Target_MenuResizePlayer, "Выберите Игрока:\n \n");     decl String:userid[15], String:name[32];     for (new i = 1; i <= MaxClients; i++)     {      if (IsClientInGame(i))      {       IntToString(GetClientUserId(i), userid, 15);       GetClientName(i, name, 32);       AddMenuItem(Target_MenuResizePlayer, userid, name);      }     }     DisplayMenu(Target_MenuResizePlayer, client, 0);    } 
   public UseResizePlayer_handle(Handle:Target_MenuResizePlayer, MenuAction:action, client, option)    {     if (action == MenuAction_End)     {      CloseHandle(Target_MenuResizePlayer);      return;     }     if (action != MenuAction_Select) return;     decl String:userid[15];    new Float:vec[3];    vec[2] -= 1;    GetMenuItem(Target_MenuResizePlayer, option, userid, 15);     new target = GetClientOfUserId(StringToInt(userid));      new hp = GetClientHealth(client);    if (target > 0)     {     if (IsClientInGame(client))     {          SetEntPropFloat(target, PropType:0, "m_flModelScale", 1.5, 0);        SetEntProp(target, PropType:0, "m_iHealth", hp + 150, 4, 0);             PrintToChat(target, "\x0700ff09Админ \x070015ff%N \x0700ff09изменил ваш класс.", client);      PrintToChat(client, "\x0700ff09Игроку \x070015ff%N \x0700ff09изменён класс.", target);     }     else     {      PrintToChat(client, "\x0700ff09Игрок \x070015ff%N \x0700ff09мёртв или в наблюдени выполнить действие не возможно", target);      Menu(client);     }    }     else PrintToChat(client, "\x07131713Игрок не найден (вышел с сервера)");     Menu(client);    } 
   ResizePlayer2Target(client)    {     new Handle:Target_MenuResizePlayer2 = CreateMenu(UseResizePlayer2_handle);     SetMenuTitle(Target_MenuResizePlayer2, "Выберите Игрока:\n \n");     decl String:userid[15], String:name[32];     for (new i = 1; i <= MaxClients; i++)     {      if (IsClientInGame(i))      {       IntToString(GetClientUserId(i), userid, 15);       GetClientName(i, name, 32);       AddMenuItem(Target_MenuResizePlayer2, userid, name);      }     }     DisplayMenu(Target_MenuResizePlayer2, client, 0);    } 
   public UseResizePlayer2_handle(Handle:Target_MenuResizePlayer2, MenuAction:action, client, option)    {     if (action == MenuAction_End)     {      CloseHandle(Target_MenuResizePlayer2);      return;     }     if (action != MenuAction_Select) return;     decl String:userid[15];    new Float:vec[3];    vec[2] -= 1;    GetMenuItem(Target_MenuResizePlayer2, option, userid, 15);     new target = GetClientOfUserId(StringToInt(userid));      new hp = GetClientHealth(client);    if (target > 0)     {     if (IsClientInGame(client))     {          SetEntPropFloat(target, PropType:0, "m_flModelScale", 2.0, 0);       SetEntProp(target, PropType:0, "m_iHealth", hp + 200, 4, 0);       trail(target)           PrintToChat(target, "\x0700ff09Админ \x070015ff%N \x0700ff09изменил ваш класс.", client);      PrintToChat(client, "\x0700ff09Игроку \x070015ff%N \x0700ff09изменён класс.", target);     }     else     {      PrintToChat(client, "\x0700ff09Игрок \x070015ff%N \x0700ff09мёртв или в наблюдени выполнить действие не возможно", target);      Menu(client);     }    }     else PrintToChat(client, "\x07131713Игрок не найден (вышел с сервера)");     Menu(client);    } 
   trail(target)   { 
    new sp_i = CreateEntityByName("env_spritetrail");     new Float:center[3];     GetClientAbsOrigin(target, center); //Получаем координату ног игрока     DispatchKeyValueVector(sp_i, "origin", center);  //Подготавливаем спавн в точке ног        DispatchKeyValue(sp_i, "lifetime", "2"); //Время жизни        DispatchKeyValue(sp_i, "startwidth", "1.0"); //Начальная ширина 1.0        DispatchKeyValue(sp_i, "endwidth", "2.0");  //Конечная тоже        DispatchKeyValue(sp_i, "spritename", "materials/sprites/laserbeam.vmt");  //Спрайт такой. Заранее прекэшнутый.        DispatchKeyValue(sp_i, "rendermode", "1"); //Видимый        DispatchKeyValue(sp_i, "rendercolor", "255 0 0"); //Красный        DispatchKeyValue(sp_i, "renderamt", "255");  //Полностью непрозрачен        DispatchSpawn(sp_i);  //Спавним    //теперь привяжем его к игроку    new String:name[128];    GetClientName(target, name, sizeof(name)); //получаем имя игрока        SetVariantString(name);   //Ставим строку с именем игрока        AcceptEntityInput(sp_i, "SetParent"); //Привязываем к нему        AcceptEntityInput(sp_i, "ShowSprite"); //Показываем наш спрайт      return Plugin_Continue;    }     
 | 
 
|   | 
 |    |  
| 
BarD
 | 
Дата: Вторник, 16.09.2014, 11:48:03 | Сообщение # 2 |  
  
  |  
Сообщений: 943
 
Репутация: 137 [ +/- ]
 |   
 | 
Я бы сделал так: 
   Код #include <sourcemod>     #include <sdktools>     #include <cstrike>     #include <sdkhooks>     #include <entity>   
   new chosenclass[MAXPLAYERS+1];           public OnPluginStart()     {        RegConsoleCmd("say_team", HookCommand);        RegConsoleCmd("say", HookCommand);     }   
   public OnMapStart()   {     PrecacheModel("materials/sprites/laserbeam.vmt");   } 
   public Action:HookCommand(client,argc)      {         decl String:player[64],String:Hook_Command[32];         GetCmdArg(1,Hook_Command,sizeof(Hook_Command));         GetCmdArg(2,player,sizeof(player));                 if(StrEqual(Hook_Command,"ac",false))         {          Menu(client);         }      }   
   Menu(client)     {                new Handle:hMenu = CreateMenu(Menu_handle);        SetMenuTitle(hMenu, "Выберите Функцию:");                AddMenuItem(hMenu, "", "Дать обычный класс");        AddMenuItem(hMenu, "", "Дать средний класс");        AddMenuItem(hMenu, "", "Дать высший класс");                DisplayMenu(hMenu, client, 0);         return 0;     }   
   public Menu_handle(Handle:hMenu,MenuAction:action,client,slot)     {        if(action==MenuAction_Select)        {         switch(slot)         {          case 0:          {           chosenclass[client] = 1;          }          case 1:          {           chosenclass[client] = 2;           }          case 2:          {           chosenclass[client] = 3;          }         }        }                else if(action==MenuAction_End)        {         CloseHandle(hMenu);        }        ChoosePlayerMenu(client);   } 
   ChoosePlayerMenu(client)      {         new Handle:cmenu= CreateMenu(ChooseMenu_Select);         SetMenuTitle(cmenu, "Выберите Игрока:\n \n");         decl String:userid[15], String:name[32];         for (new i = 1; i <= MaxClients; i++)         {          if (IsClientInGame(i))          {           IntToString(GetClientUserId(i), userid, 15);           GetClientName(i, name, 32);           AddMenuItem(cmenu, userid, name);          }         }         DisplayMenu(cmenu, client, 0);      } 
   public ChooseMenu_Select(Handle:cmenu, MenuAction:action, client, option)      {         if (action == MenuAction_End)         {          CloseHandle(cmenu);          return;         }         if (action != MenuAction_Select) return;        decl String:userid[15];   GetMenuItem(cmenu, option, userid, 15);      new target = GetClientOfUserId(StringToInt(userid));     if (target>0)   {   if (chosenclass[client] > 0)   {     ChangePlayerClass(target, chosenclass[client]);   PrintToChat(client, ""\x0700ff09Игроку \x070015ff%N \x0700ff09изменён класс.", target");   PrintToChat(target, "\x0700ff09Админ \x070015ff%N \x0700ff09изменил ваш класс.", client);     chosenclass[client] = 0;   Menu(client);   }   else PrintToChat(client, "Ошибка");   }   else PrintToChat(client, "Игрок не найден!");   } 
   stock ChangePlayerClass(client, const class)   {       new hp = GetClientHealth(client);       if (class == 1)         {        SetEntPropFloat(client, PropType:0, "m_flModelScale", 1.0, 0);            SetEntProp(client, PropType:0, "m_iHealth", hp + 100, 4, 0);         }   else if (class == 2)      {         SetEntPropFloat(client, PropType:0, "m_flModelScale", 1.5, 0);            SetEntProp(client, PropType:0, "m_iHealth", hp + 150, 4, 0);        }   else if (class == 3)     {       SetEntPropFloat(client, PropType:0, "m_flModelScale", 2.0, 0);           SetEntProp(client, PropType:0, "m_iHealth", hp + 200, 4, 0);     }   trail(client);   } 
   stock trail(target)     {        new sp_i = CreateEntityByName("env_spritetrail");         new Float:center[3];         GetClientAbsOrigin(target, center); //Получаем координату ног игрока         DispatchKeyValueVector(sp_i, "origin", center);  //Подготавливаем спавн в точке ног            DispatchKeyValue(sp_i, "lifetime", "2"); //Время жизни            DispatchKeyValue(sp_i, "startwidth", "1.0"); //Начальная ширина 1.0            DispatchKeyValue(sp_i, "endwidth", "2.0");  //Конечная тоже            DispatchKeyValue(sp_i, "spritename", "materials/sprites/laserbeam.vmt");  //Спрайт такой. Заранее прекэшнутый.            DispatchKeyValue(sp_i, "rendermode", "1"); //Видимый            DispatchKeyValue(sp_i, "rendercolor", "255 0 0"); //Красный            DispatchKeyValue(sp_i, "renderamt", "255");  //Полностью непрозрачен            DispatchSpawn(sp_i);  //Спавним      //теперь привяжем его к игроку      new String:name[128];      GetClientName(target, name, sizeof(name)); //получаем имя игрока            SetVariantString(name);   //Ставим строку с именем игрока            AcceptEntityInput(sp_i, "SetParent"); //Привязываем к нему            AcceptEntityInput(sp_i, "ShowSprite"); //Показываем наш спрайт          return Plugin_Continue;      }   
   Сам не тестил, но должно работать. 
   P.S. SetEntPropFloat(target, PropType:0, "m_flHeadScale", 5.0, 0); не существует уже. В новой css такого оффсета нет. 
 
 Сообщение отредактировал BarD - Вторник, 16.09.2014, 11:49:12  | 
 
|   | 
 |    |  
| 
pro-health
 | 
Дата: Вторник, 16.09.2014, 12:48:30 | Сообщение # 3 |  
  
  |  
Сообщений: 188
 
Репутация: 5 [ +/- ]
 |   
 | 
BarD, спс только.   Не   Код PrintToChat(client, ""\x0700ff09Игроку \x070015ff%N \x0700ff09изменён класс.", target");    
   а   Код PrintToChat(client, "\x0700ff09Игроку \x070015ff%N \x0700ff09изменён класс.", target);   
 | 
 
|   | 
 |    |  
| 
BarD
 | 
Дата: Вторник, 16.09.2014, 14:14:43 | Сообщение # 4 |  
  
  |  
Сообщений: 943
 
Репутация: 137 [ +/- ]
 |   
 | 
 Да, я просто копировал неудачно) 
 | 
 
|   | 
 |    |  
| 
pro-health
 | 
Дата: Вторник, 16.09.2014, 18:50:28 | Сообщение # 5 |  
  
  |  
Сообщений: 188
 
Репутация: 5 [ +/- ]
 |   
 | 
 BarD, аа забыл треил не робит =( 
 | 
 
|   | 
 |    |     
		
		
 
 |