У меня есть випка а в неё надо добавить функцию trail. Чтобы у каждого випа был треил. Но я не знаю как это прописать чтобы был токо один треил и он был постоянный, токо у випов!
Это надо сам плагин разбирать. Выяснять, какая переменная отвечает за трейл и за вип статус. В трейлах я не оч разбираюсь, попроси wS'а)
Добавлено (12.03.2014, 11:36:30) --------------------------------------------- Вообще, добавить трейл игроку можно так:
Код
new Float:Pos[3]; GetClientAbsOrigin(client, Pos); // Узнаем позицию игрока Pos[2] += 55.0; new trail = CreateEntityByName("env_spritetrail", -1); if (trail < 1) { LogError("env_spritetrail create error!"); return 0; } DispatchKeyValueVector(trail, "origin", Pos); decl String:Name[64]; GetClientName(client, Name, 64); // Узнаем имя игрока DispatchKeyValue(trail, "parentname", Name); // И привязываем к нему трейл DispatchKeyValue(trail, "spritename", "sprites/laser.vmt"); // Тут вместо sprites/laser.vmt указываешь путь к своему трейлу DispatchKeyValue(trail, "rendermode", "5"); DispatchKeyValue(trail, "rendercolor", "200 150 125"); // Цвет трейла DispatchKeyValue(trail, "renderamt", "255"); DispatchKeyValueFloat(trail, "lifetime", 10.0); // Время от появления до исчезания DispatchKeyValueFloat(trail, "startwidth", 3.0); // начальная ширина DispatchKeyValueFloat(trail, "endwidth", 7.0); // Конечная ширина DispatchSpawn(trail);
В общем, эта тема тебе поможет http://world-source.ru/forum/102-2652-1
public Plugin:myinfo = { name = "*~ Menu Vip ~*", author = "|-=Arena-M=-|", description = "Меню преимуществ (привилегий) -Флаг p-", version = INFO_VERSION, url = "http://prog69.ru/", }
new Handle:g_iSpeed = INVALID_HANDLE; new Handle:g_iMoney = INVALID_HANDLE; new Handle:g_iGravity = INVALID_HANDLE; new Handle:Active_Armure = INVALID_HANDLE; new Handle:Active_Usp = INVALID_HANDLE; new Handle:Active_Grenade = INVALID_HANDLE; new Handle:Active_Smoke = INVALID_HANDLE; new Handle:Active_Vitesse = INVALID_HANDLE; new Handle:Active_Gravite = INVALID_HANDLE; new Handle:Active_Regeneration = INVALID_HANDLE; new Handle:Active_Rien = INVALID_HANDLE; new Handle:Active_Clan_Tag = INVALID_HANDLE; new Handle:Active_Vip_Name = INVALID_HANDLE; new Handle:Active_Transparance = INVALID_HANDLE; new Handle:Active_ThirdPerson = INVALID_HANDLE; new Handle:g_tagteam = INVALID_HANDLE; new Handle:g_menu = INVALID_HANDLE; new Handle:g_hRegenTimer[MAXPLAYERS + 1]; new Handle:g_Interval; new Handle:g_MaxHP; new Handle:g_Inc; new Handle:g_hVip;
new String:g_sVip[64]; new String:TagTeam[64]; new String:info[64]; new String:steamid[64];
new Float:iGravity = 1.0; new Float:iSpeed = 0.5;
new bool:IsValideRegen[MAXPLAYERS+1] = false; new bool:HasMenu[MAXPLAYERS] = false; new bool:HasUseMenu[MAXPLAYERS] = false;
new Armure = 0; new Usp = 0; new Grenade = 0; new Smoke = 0; new Vitesse = 0; new Argent = 0; new Gravite = 0; new Regeneration = 0; new Rien = 0; new Clan_Tag = 0; new Vip_Name = 0; new Transparance = 0; new iMoney = 0; new menuv = 0; new ThirdPerson = 0; new menu_times[MAXPLAYERS] = 0; new PlayerRespawn[MAXPLAYERS+1];
public OnPluginStart() { HookEvent("round_start", OnRoundStart); HookEvent("player_hurt", OnPlayerHurt);
public OnPlayerHurt(Handle:event, const String:name[], bool:dontBroadcast) { new iUserId = GetEventInt(event, "userid"); new client = GetClientOfUserId(iUserId);
GetClientAbsOrigin(client, Pos); // Узнаем позицию игрока 305 Pos[2] += 55.0; new trail = CreateEntityByName("env_spritetrail", -1); if (trail < 1) 308 { LogError("env_spritetrail create error!"); return 0; 311 } DispatchKeyValueVector(trail, "origin", Pos); decl String:Name[64]; 314 GetClientName(client, Name, 64); // Узнаем имя игрока DispatchKeyValue(trail, "parentname", Name); // И привязываем к нему трейл DispatchKeyValue(trail, "spritename", "materials/[HCG trails]/dollarfire.vmt"); // Тут вместо sprites/laser.vmt указываешь путь к своему трейлу DispatchKeyValue(trail, "rendermode", "5"); DispatchKeyValue(trail, "rendercolor", "200 150 125"); // Цвет трейла DispatchKeyValue(trail, "renderamt", "255"); DispatchKeyValueFloat(trail, "lifetime", 10.0); // Время от появления до исчезания DispatchKeyValueFloat(trail, "startwidth", 3.0); // начальная ширина DispatchKeyValueFloat(trail, "endwidth", 7.0); // Конечная ширина DispatchSpawn(trail);
new Float:clientpos[3]; GetClientAbsOrigin(client, clientpos); Pos[2] += 55.0; new trail = CreateEntityByName("env_spritetrail", -1);
DispatchKeyValueVector(trail, "origin", Pos); decl String:Name[64]; GetClientName(client, clientname, 64); // Узнаем имя игрока DispatchKeyValue(trail, "parentname", Name); // И привязываем к нему трейл DispatchKeyValue(trail, "spritename", "materials/[HCG trails]/dollarfire.vmt"); // Тут вместо sprites/laser.vmt указываешь путь к своему трейлу DispatchKeyValue(trail, "rendermode", "5"); DispatchKeyValue(trail, "rendercolor", "200 150 125"); // Цвет трейла DispatchKeyValue(trail, "renderamt", "255"); DispatchKeyValueFloat(trail, "lifetime", 10.0); // Время от появления до исчезания DispatchKeyValueFloat(trail, "startwidth", 3.0); // начальная ширина DispatchKeyValueFloat(trail, "endwidth", 7.0); // Конечная ширина DispatchSpawn(trail);
Но всеравно ошибки:
Код
//// vip.sp // E:\servers\╧ырушэ√\╠юш яхЁхфхыъш яырушэют\╠рёЄхЁёър \vip.sp(306) : error 021: symbol already defined: "GetClientAbsOrigin" // E:\servers\╧ырушэ√\╠юш яхЁхфхыъш яырушэют\╠рёЄхЁёър \vip.sp(310) : error 021: symbol already defined: "DispatchKeyValueVector" // E:\servers\╧ырушэ√\╠юш яхЁхфхыъш яырушэют\╠рёЄхЁёър \vip.sp(311) : error 010: invalid function or declaration // E:\servers\╧ырушэ√\╠юш яхЁхфхыъш яырушэют\╠рёЄхЁёър \vip.sp(44) : warning 203 : symbol is never used: "Pos" // E:\servers\╧ырушэ√\╠юш яхЁхфхыъш яырушэют\╠рёЄхЁёър \vip.sp(305) : warning 20 3: symbol is never used: "clientpos" // E:\servers\╧ырушэ√\╠юш яхЁхфхыъш яырушэют\╠рёЄхЁёър \vip.sp(308) : warning 20 3: symbol is never used: "trail" // // 3 Errors
public Plugin:myinfo = { name = "*~ Menu Vip ~*", author = "|-=Arena-M=-|", description = "Меню преимуществ (привилегий) -Флаг p-", version = INFO_VERSION, url = "http://prog69.ru/", }
new Handle:g_iSpeed = INVALID_HANDLE; new Handle:g_iMoney = INVALID_HANDLE; new Handle:g_iGravity = INVALID_HANDLE; new Handle:Active_Armure = INVALID_HANDLE; new Handle:Active_Usp = INVALID_HANDLE; new Handle:Active_Grenade = INVALID_HANDLE; new Handle:Active_Smoke = INVALID_HANDLE; new Handle:Active_Vitesse = INVALID_HANDLE; new Handle:Active_Gravite = INVALID_HANDLE; new Handle:Active_Regeneration = INVALID_HANDLE; new Handle:Active_Rien = INVALID_HANDLE; new Handle:Active_Clan_Tag = INVALID_HANDLE; new Handle:Active_Vip_Name = INVALID_HANDLE; new Handle:Active_Transparance = INVALID_HANDLE; new Handle:Active_ThirdPerson = INVALID_HANDLE; new Handle:g_tagteam = INVALID_HANDLE; new Handle:g_menu = INVALID_HANDLE; new Handle:g_hRegenTimer[MAXPLAYERS + 1]; new Handle:g_Interval; new Handle:g_MaxHP; new Handle:g_Inc; new Handle:g_hVip; new Float:Pos[3];
new String:g_sVip[64]; new String:TagTeam[64]; new String:info[64]; new String:steamid[64];
new Float:iGravity = 1.0; new Float:iSpeed = 0.5;
new bool:IsValideRegen[MAXPLAYERS+1] = false; new bool:HasMenu[MAXPLAYERS] = false; new bool:HasUseMenu[MAXPLAYERS] = false;
new Armure = 0; new Usp = 0; new Grenade = 0; new Smoke = 0; new Vitesse = 0; new Argent = 0; new Gravite = 0; new Regeneration = 0; new Rien = 0; new Clan_Tag = 0; new Vip_Name = 0; new Transparance = 0; new iMoney = 0; new menuv = 0; new ThirdPerson = 0; new menu_times[MAXPLAYERS] = 0; new PlayerRespawn[MAXPLAYERS+1];
public OnPluginStart() { HookEvent("round_start", OnRoundStart); HookEvent("player_hurt", OnPlayerHurt);
public Action:OnRoundStart(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); for(new i = 1; i <= MaxClients; i++) { HasMenu[i] = false; HasUseMenu[i] = false; menu_times[i] = 0; } if(GetClientTeam(client) > 1) { CPrintToChatAll("{LightSeaGreen}Напишите {gold}{%s} !vip {LightSeaGreen}, чтобы открыть VIP меню.", TagTeam); } }
public Action:menuvip(client, args) { GetClientAuthString(client, steamid, sizeof(steamid)); if (GetUserFlagBits(client) & ADMFLAG_CUSTOM2) { if(client == 0) { CPrintToChat(client, "{gold}%s {LightSeaGreen}Команда не доступна. Ку пи випку у гл. админа в скайпе {gold}sahapro33", TagTeam); return Plugin_Handled; } if(menuv <= 0) { CPrintToChat(client, "{gold}%s {LightSeaGreen}Эта команда отключена.", TagTeam); return Plugin_Handled; } if(GetClientTeam(client) == 1) { CPrintToChat(client, "{gold}%s {LightSeaGreen}Вы не можете использовать эту команду в наблюдателях.", TagTeam); return Plugin_Handled; } if(!IsPlayerAlive(client)) { CPrintToChat(client, "{gold}%s {LightSeaGreen}Вы должны быть живы.", TagTeam); return Plugin_Handled; } if(HasMenu[client]) { CPrintToChat(client, menu_times[client] >= menuv ? "{gold}%s {LightSeaGreen}Вы использовали все свои преимущества.":"Вы не можете открыть меню.", TagTeam); return Plugin_Handled; } else { HasUseMenu[client] = true; new Handle:menu = CreateMenu(vipmenu); SetMenuTitle(menu, "<<= VIP меню =>>"); if(Armure == 1) { AddMenuItem(menu, "Armure", "Больше брони"); } if (Usp == 1) { AddMenuItem(menu, "Usp", "Выдать USP"); } if (Grenade == 1) { AddMenuItem(menu, "Grenade", "Выдать гранату"); } if (Smoke == 1) { AddMenuItem(menu, "Smoke", "Выдать дым.шашку"); } if (Vitesse == 1) { AddMenuItem(menu, "Vitesse", "Больше скорости"); } if (Argent == 1) { AddMenuItem(menu, "Argent", "Больше денег"); } if (Gravite == 1) { AddMenuItem(menu, "Gravite", "Гравитация"); } if (Regeneration == 1) { AddMenuItem(menu, "Regeneration", "Регенерация HP"); } if (Transparance == 1) { AddMenuItem(menu, "Transparance", "Прозрачность"); } if (ThirdPerson == 1) { AddMenuItem(menu, "ThirdPerson", "Вид от третьего лица"); } SetMenuExitButton(menu, (Rien == 1 ? true : false)); DisplayMenu(menu, client, MENU_TIME_FOREVER); menu_times[client]++; if(menu_times[client] >= menuv) { HasMenu[client] = true; } CPrintToChat(client, "{gold}%s {LightSeaGreen}Использовал преимущество {gold}%i/%i{LightSeaGreen}.", TagTeam, menu_times[client], menuv); } return Plugin_Continue; } else { CPrintToChat( client, "{gold}%s {LightSeaGreen}Вы должны быть {gold}VIP{LightSeaGreen}!" , TagTeam); } return Plugin_Continue; }
new Float:clientpos[3]; GetClientAbsOrigin(client, clientpos); Pos[2] += 55.0; new trail = CreateEntityByName("env_spritetrail", -1);
DispatchKeyValueVector(trail, "origin", Pos); decl String:Name[64]; GetClientName(client, clientname, 64); // Узнаем имя игрока DispatchKeyValue(trail, "parentname", Name); // И привязываем к нему трейл DispatchKeyValue(trail, "spritename", "materials/[HCG trails]/dollarfire.vmt"); // Тут вместо sprites/laser.vmt указываешь путь к своему трейлу DispatchKeyValue(trail, "rendermode", "5"); DispatchKeyValue(trail, "rendercolor", "200 150 125"); // Цвет трейла DispatchKeyValue(trail, "renderamt", "255"); DispatchKeyValueFloat(trail, "lifetime", 10.0); // Время от появления до исчезания DispatchKeyValueFloat(trail, "startwidth", 3.0); // начальная ширина DispatchKeyValueFloat(trail, "endwidth", 7.0); // Конечная ширина DispatchSpawn(trail);
public vipmenu(Handle:menu, MenuAction:action, client, param2) { if ( action == MenuAction_Select ) { GetMenuItem(menu, param2, info, sizeof(info));
public OnPlayerHurt(Handle:event, const String:name[], bool:dontBroadcast) { new iUserId = GetEventInt(event, "userid"); new client = GetClientOfUserId(iUserId);
public Plugin:myinfo = { name = "*~ Menu Vip ~*", author = "|-=Arena-M=-|", description = "Меню преимуществ (привилегий) -Флаг p-", version = INFO_VERSION, url = "http://prog69.ru/", }
new Handle:g_iSpeed = INVALID_HANDLE; new Handle:g_iMoney = INVALID_HANDLE; new Handle:g_iGravity = INVALID_HANDLE; new Handle:Active_Armure = INVALID_HANDLE; new Handle:Active_Usp = INVALID_HANDLE; new Handle:Active_Grenade = INVALID_HANDLE; new Handle:Active_Smoke = INVALID_HANDLE; new Handle:Active_Vitesse = INVALID_HANDLE; new Handle:Active_Gravite = INVALID_HANDLE; new Handle:Active_Regeneration = INVALID_HANDLE; new Handle:Active_Rien = INVALID_HANDLE; new Handle:Active_Clan_Tag = INVALID_HANDLE; new Handle:Active_Vip_Name = INVALID_HANDLE; new Handle:Active_Transparance = INVALID_HANDLE; new Handle:Active_ThirdPerson = INVALID_HANDLE; new Handle:g_tagteam = INVALID_HANDLE; new Handle:g_menu = INVALID_HANDLE; new Handle:g_hRegenTimer[MAXPLAYERS + 1]; new Handle:g_Interval; new Handle:g_MaxHP; new Handle:g_Inc; new Handle:g_hVip; new Float:Pos[3];
new String:g_sVip[64]; new String:TagTeam[64]; new String:info[64]; new String:steamid[64];
new Float:iGravity = 1.0; new Float:iSpeed = 0.5;
new bool:IsValideRegen[MAXPLAYERS+1] = false; new bool:HasMenu[MAXPLAYERS] = false; new bool:HasUseMenu[MAXPLAYERS] = false;
new Armure = 0; new Usp = 0; new Grenade = 0; new Smoke = 0; new Vitesse = 0; new Argent = 0; new Gravite = 0; new Regeneration = 0; new Rien = 0; new Clan_Tag = 0; new Vip_Name = 0; new Transparance = 0; new iMoney = 0; new menuv = 0; new ThirdPerson = 0; new menu_times[MAXPLAYERS] = 0; new PlayerRespawn[MAXPLAYERS+1]; new Trail = 0;
public OnPluginStart() { HookEvent("round_start", OnRoundStart); HookEvent("player_hurt", OnPlayerHurt);
DispatchKeyValueVector(trail, "origin", Pos); decl String:Name[64]; GetClientName(client, Name, 64); // Узнаем имя игрока DispatchKeyValue(trail, "parentname", Name); // И привязываем к нему трейл DispatchKeyValue(trail, "spritename", "[HCG trails]/dollarfire.vmt"); // Тут вместо sprites/laser.vmt указываешь путь к своему трейлу DispatchKeyValue(trail, "rendermode", "5"); DispatchKeyValue(trail, "rendercolor", "200 150 125"); // Цвет трейла DispatchKeyValue(trail, "renderamt", "255"); DispatchKeyValueFloat(trail, "lifetime", 10.0); // Время от появления до исчезания DispatchKeyValueFloat(trail, "startwidth", 3.0); // начальная ширина DispatchKeyValueFloat(trail, "endwidth", 7.0); // Конечная ширина DispatchSpawn(trail); } } else if (action == MenuAction_End ) { CloseHandle(menu); } }
public OnPlayerHurt(Handle:event, const String:name[], bool:dontBroadcast) { new iUserId = GetEventInt(event, "userid"); new client = GetClientOfUserId(iUserId);