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, аа забыл треил не робит =(
|
|
| |
|