TajnyGraczGry
Użytkownik-
Postów
12 -
Dołączył
-
Ostatnia wizyta
Treść opublikowana przez TajnyGraczGry
-
Witajcie, Tak jak w temacie, poszukuję pluginu na itemy, który działał by tak, że np. po wpisaniu komendy !itemy wyświetlał by nazwę itemu i po kliknięciu w nznią zakupilibyśmy go za określoną ilość monet.
-
Dzięki panowie
-
ROZWIĄZANE Pytanie dotyczące BSlimiter
TajnyGraczGry odpowiedział(a) na TajnyGraczGry temat w Pytania ogólne
Edytowane były tylko mapki tzn. zamienione. Już działa :D -
Jak zablokować ten plugin aby był tylko dla VIP'a? (flaga "a") #include <sourcemod> #include <clientprefs> #include <colors> #define PLUGIN_VERSION "1.0.7" public Plugin:myinfo = { name = "Show Damage", author = "exvel", description = "Shows damage in the center of the screen.", version = PLUGIN_VERSION, url = "www.sourcemod.net" } new player_old_health[MAXPLAYERS + 1]; new player_damage[MAXPLAYERS + 1]; new bool:block_timer[MAXPLAYERS + 1] = {false,...}; new bool:FrameMod = true; new String:DamageEventName[16]; new MaxDamage = 10000000; new bool:option_show_damage[MAXPLAYERS + 1] = {true,...}; new Handle:cookie_show_damage = INVALID_HANDLE; //CVars' handles new Handle:cvar_show_damage = INVALID_HANDLE; new Handle:cvar_show_damage_ff = INVALID_HANDLE; new Handle:cvar_show_damage_own_dmg = INVALID_HANDLE; new Handle:cvar_show_damage_text_area = INVALID_HANDLE; //CVars' varibles new bool:show_damage = true; new bool:show_damage_ff = false; new bool:show_damage_own_dmg = false; new show_damage_text_area = 1; public OnPluginStart() { decl String:gameName[80]; GetGameFolderName(gameName, 80); if (StrEqual(gameName, "cstrike") || StrEqual(gameName, "insurgency")) { HookEvent("player_hurt", Event_PlayerHurt, EventHookMode_Post); DamageEventName = "dmg_health"; FrameMod = false; } else if (StrEqual(gameName, "left4dead") || StrEqual(gameName, "left4dead2")) { HookEvent("player_hurt", Event_PlayerHurt, EventHookMode_Post); HookEvent("infected_hurt", Event_InfectedHurt, EventHookMode_Post); MaxDamage = 2000; DamageEventName = "dmg_health"; FrameMod = false; } else if (StrEqual(gameName, "dod") || StrEqual(gameName, "hidden")) { HookEvent("player_hurt", Event_PlayerHurt, EventHookMode_Post); DamageEventName = "damage"; FrameMod = false; } else { HookEvent("player_hurt", Event_PlayerHurt_FrameMod, EventHookMode_Pre); FrameMod = true; } CreateConVar("sm_show_damage_version", PLUGIN_VERSION, "Show Damage Version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY|FCVAR_DONTRECORD); cvar_show_damage = CreateConVar("sm_show_damage", "1", "Enabled/Disabled show damage functionality, 0 = off/1 = on", FCVAR_PLUGIN, true, 0.0, true, 1.0); cvar_show_damage_ff = CreateConVar("sm_show_damage_ff", "0", "Show friendly fire damage, 0 = off/1 = on", FCVAR_PLUGIN, true, 0.0, true, 1.0); cvar_show_damage_own_dmg = CreateConVar("sm_show_damage_own_dmg", "0", "Show your own damage, 0 = off/1 = on", FCVAR_PLUGIN, true, 0.0, true, 1.0); cvar_show_damage_text_area = CreateConVar("sm_show_damage_text_area", "1", "Defines the area for damage text:\n 1 = in the center of the screen\n 2 = in the hint text area \n 3 = in chat area of screen", FCVAR_PLUGIN, true, 1.0, true, 3.0); HookEvent("player_spawn", Event_PlayerSpawn, EventHookMode_Post); HookConVarChange(cvar_show_damage, OnCVarChange); HookConVarChange(cvar_show_damage_ff, OnCVarChange); HookConVarChange(cvar_show_damage_own_dmg, OnCVarChange); HookConVarChange(cvar_show_damage_text_area, OnCVarChange); AutoExecConfig(true, "plugin.showdamage"); LoadTranslations("common.phrases"); LoadTranslations("showdamage.phrases"); cookie_show_damage = RegClientCookie("Show Damage On/Off", "", CookieAccess_Private); new info; SetCookieMenuItem(CookieMenuHandler_ShowDamage, any:info, "Show Damage"); } public CookieMenuHandler_ShowDamage(client, CookieMenuAction:action, any:info, String:buffer[], maxlen) { if (action == CookieMenuAction_DisplayOption) { decl String:status[10]; if (option_show_damage[client]) { Format(status, sizeof(status), "%T", "On", client); } else { Format(status, sizeof(status), "%T", "Off", client); } Format(buffer, maxlen, "%T: %s", "Cookie Show Damage", client, status); } // CookieMenuAction_SelectOption else { option_show_damage[client] = !option_show_damage[client]; if (option_show_damage[client]) { SetClientCookie(client, cookie_show_damage, "On"); } else { SetClientCookie(client, cookie_show_damage, "Off"); } ShowCookieMenu(client); } } public OnClientCookiesCached(client) { option_show_damage[client] = GetCookieShowDamage(client); } bool:GetCookieShowDamage(client) { decl String:buffer[10]; GetClientCookie(client, cookie_show_damage, buffer, sizeof(buffer)); return !StrEqual(buffer, "Off"); } public OnConfigsExecuted() { GetCVars(); } public OnClientConnected(client) { block_timer[client] = false; } public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); block_timer[client] = false; return Plugin_Continue; } //This is for games that have no damage information in player_hurt event public OnGameFrame() { if (FrameMod && show_damage) { for (new client = 1; client <= MaxClients; client++) { if (IsClientInGame(client)) { player_old_health[client] = GetClientHealth(client); } } } } public Action:ShowDamage(Handle:timer, any:client) { block_timer[client] = false; if (player_damage[client] <= 0 || !client) { return; } if (!IsClientInGame(client)) { return; } switch (show_damage_text_area) { case 1: { PrintCenterText(client, "%t", "CenterText Damage Text", player_damage[client]); } case 2: { PrintHintText(client, "%t", "HintText Damage Text", player_damage[client]); } case 3: { CPrintToChat(client, "%t", "Chat Damage Text", player_damage[client]); } } player_damage[client] = 0; } public Action:Event_PlayerHurt_FrameMod(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); new client_attacker = GetClientOfUserId(GetEventInt(event, "attacker")); new damage = player_old_health[client] - GetClientHealth(client); CalcDamage(client, client_attacker, damage); return Plugin_Continue; } public Action:Event_PlayerHurt(Handle:event, const String:name[], bool:dontBroadcast) { new client_attacker = GetClientOfUserId(GetEventInt(event, "attacker")); new client = GetClientOfUserId(GetEventInt(event, "userid")); new damage = GetEventInt(event, DamageEventName); CalcDamage(client, client_attacker, damage); return Plugin_Continue; } public Action:Event_InfectedHurt(Handle:event, const String:name[], bool:dontBroadcast) { new client_attacker = GetClientOfUserId(GetEventInt(event, "attacker")); new damage = GetEventInt(event, "amount"); CalcDamage(0, client_attacker, damage); return Plugin_Continue; } CalcDamage(client, client_attacker, damage) { if (!show_damage || !option_show_damage[client_attacker]) { return; } if (client_attacker == 0) { return; } if (IsFakeClient(client_attacker) || !IsClientInGame(client_attacker)) { return; } //If client == 0 than skip this verifying. It can be an infected or something else without client index. if (client != 0) { if (client == client_attacker) { if (!show_damage_own_dmg) { return; } } else if (GetClientTeam(client) == GetClientTeam(client_attacker)) { if (!show_damage_ff) { return; } } } //This is a fix for Left 4 Dead. When tank dies the game fires hurt event with 5000 dmg that is a bug. if (damage > MaxDamage) { return; } player_damage[client_attacker] += damage; if (block_timer[client_attacker]) { return; } CreateTimer(0.01, ShowDamage, client_attacker); block_timer[client_attacker] = true; } public OnCVarChange(Handle:convar_hndl, const String:oldValue[], const String:newValue[]) { GetCVars(); } GetCVars() { show_damage = GetConVarBool(cvar_show_damage); show_damage_ff = GetConVarBool(cvar_show_damage_ff); show_damage_own_dmg = GetConVarBool(cvar_show_damage_own_dmg); show_damage_text_area = GetConVarInt(cvar_show_damage_text_area); }
-
Co zrobić, jeżeli nie wyświetla się inforacja na czacie, który BS jest zablokowany? #pragma semicolon 1 #include <sourcemod> #include <sdktools> #include <cstrike> #define STANDARDMAPSMAX 12 new String:BSAL[1]; new EIBA = -1; new EIBB = -1; new Handle:Timer = INVALID_HANDLE; new String:StandardMaps[STANDARDMAPSMAX][2][11] = { { "de_mirage","A" }, { "de_cache","A" }, { "de_chateau","A" }, { "de_dust","A" }, { "de_dust2","A" }, { "de_inferno","A" }, { "de_nuke","B" }, { "de_piranesi","A" }, { "de_port","A" }, { "de_prodigy","B" }, { "de_tides","A" }, { "de_train","A" } }; public Plugin:myinfo = { name = "Bombsite Limiter", author = "Tomasz 'anacron' Motylinski", description = "Limiting Bomsites when due to low CT players.", version = "1.2.3", url = "http://anacron.pl/" } public OnPluginStart() { HookEvent("round_freeze_end",Event_RoundFreezeEnd,EventHookMode_Post); HookEvent("bomb_planted",Event_RoundEnd,EventHookMode_Post); HookEvent("round_end",Event_RoundEnd,EventHookMode_Post); CreateConVar("sm_bslimiter","1.2.3","Version Information",FCVAR_REPLICATED|FCVAR_NOTIFY); } stock bool:IsVecBetween(const Float:vecVector[3],const Float:vecMin[3],const Float:vecMax[3]) { return ( (vecMin[0] <= vecVector[0] <= vecMax[0]) && (vecMin[1] <= vecVector[1] <= vecMax[1]) && (vecMin[2] <= vecVector[2] <= vecMax[2]) ); } public Message() { PrintToChatAll("[BS Limiter] Ze wzgledu na mala liczbe CT w tej rundzie. Beda oni bronic tylko Bombside %s.",BSAL); PrintHintTextToAll("Tylko Bombsite %s jest wlaczony w tej rundzie",BSAL); } public Action:RepeatMessage(Handle:timer) { Message(); } public Action:Event_RoundFreezeEnd (Handle:event,const String:name[],bool:dontBroadcast) { if(IsValidEntity(EIBA)) { EIBA = -1; } if(IsValidEntity(EIBB)) { EIBB = -1; } if(Timer != INVALID_HANDLE) { CloseHandle(Timer); Timer = INVALID_HANDLE; } new Float:VBCPA[3]; new Float:VBCPB[3]; new EI = -1; EI = FindEntityByClassname(EI,"cs_player_manager"); if(IsValidEntity(EI)) { GetEntPropVector(EI,Prop_Send,"m_bombsiteCenterA",VBCPA); GetEntPropVector(EI,Prop_Send,"m_bombsiteCenterB",VBCPB); } EI = -1; EI = FindEntityByClassname(EI,"func_bomb_target"); while(IsValidEntity(EI)) { new Float:VBMin[3]; new Float:VBMax[3]; GetEntPropVector(EI,Prop_Send,"m_vecMins",VBMin); GetEntPropVector(EI,Prop_Send,"m_vecMaxs",VBMax); if (IsVecBetween(VBCPA,VBMin,VBMax)) { EIBA = EI; } else if (IsVecBetween(VBCPB,VBMin,VBMax)) { EIBB = EI; } EI = FindEntityByClassname(EI,"func_bomb_target"); } if(IsValidEntity(EIBA) && IsValidEntity(EIBB)) { new CTPlayers = GetTeamClientCount(CS_TEAM_CT); new TTPlayers = GetTeamClientCount(CS_TEAM_T); if(((CTPlayers > TTPlayers) && (TTPlayers == 1 || CTPlayers > 3)) || CTPlayers > 4) { AcceptEntityInput(EIBB,"Enable"); AcceptEntityInput(EIBA,"Enable"); BSAL = ""; PrintHintTextToAll("All Bombsites are enabled in this round!"); PrintCenterTextAll("All Bombsites are enabled in this round!"); } else { if(GetRandomInt(1,2) == 1) { AcceptEntityInput(EIBA,"Disable"); AcceptEntityInput(EIBB,"Enable"); BSAL = "B"; } else { AcceptEntityInput(EIBB,"Disable"); AcceptEntityInput(EIBA,"Enable"); BSAL = "A"; } decl String:CurrentMap[256]; GetCurrentMap(CurrentMap,sizeof(CurrentMap)); for(new i=0; i<STANDARDMAPSMAX; i++) { if(StrEqual(CurrentMap,StandardMaps[0],false)) { if(StrEqual(StandardMaps[1],"B",false)) { AcceptEntityInput(EIBA,"Disable"); AcceptEntityInput(EIBB,"Enable"); BSAL = "B"; } else { AcceptEntityInput(EIBB,"Disable"); AcceptEntityInput(EIBA,"Enable"); BSAL = "A"; } } } if(GetClientCount(true) > 1) { Message(); Timer = CreateTimer(60.0,RepeatMessage, _,TIMER_REPEAT); } } } } public Action:Event_RoundEnd (Handle:event,const String:name[],bool:dontBroadcast) { if(Timer != INVALID_HANDLE) { CloseHandle(Timer); Timer = INVALID_HANDLE; } if(IsValidEntity(EIBA)) { AcceptEntityInput(EIBA,"Enable"); EIBA = -1; } if(IsValidEntity(EIBB)) { AcceptEntityInput(EIBB,"Enable"); EIBB = -1; } } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par } */
-
Chodzi mi o to jak wyłączyć komendę sm plugins
-
Mam jeszcze 2 pytania: 1.Zrobisz mi żeby była taka opcja jak "cennik" i tam przykładowe ceny. 2.powiesz mi gdzie to wstawić? Bo ja trochę zielony jestem w te tematy (opcja nr 2)
-
Szukam pluginu, który po wpisaniu np !vip wyświetli informację dotyczącą vipa
-
To gdzie mam ją pobrać? Bo to było kompilowane przez tą stronę https://www.sourcemod.net/compiler.php Podał byś mi głębszą ścieżkę?
-
Co zrobić gry nie można skompilować pliku? Wyskakuje mi taki powód /home/groups/sourcemod/upload_tmp/phpyNPlAD.sp(4) : fatal error 182: cannot read from file: "scp" Compilation aborted. 1 Error. Jeżeli usunę scp to vip nie będzie miał tag vipa na czacie, ale jeżeli nie skompiluje tego w .smx to vip nie działa ;/
-
Dzięki, a w jakim pliku można zmieniać ustawienia mapy "mp_", "sv_" bo chcę pozmieniać parę rzeczy.
-
Mam problem, ponieważ jestem nowy w tworzeniu serwerów. Chciałbym dowiedzieć się w jakim pliku mogę nadać graczowi vipa (cs go). W ogóle fajnie by było jakbyście opisali mi proces wgrywania pluginu na vipa i nadawanie tej rangi graczowi.