Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

camerdisco

Użytkownik
  • Postów

    219
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    13

Treść opublikowana przez camerdisco

  1. https://sm.alliedmods.net/new-api/sdktools_functions/IgniteEntity Każdą funkcję znajdziesz w api, możesz teraz dowiedzieć się który argument jest od czasu trwania podpalenia. Co do zapraszam do poczytania o zmiennej typu boolean, najlepiej stąd https://wiki.alliedmods.net/Introduction_to_sourcepawn
  2. Z tego co widzę to kopiowałes kod z amxx, client_PreThink nie ma bezpośrednio i trzeba najpierw to wywołać, ale w tym przypadku najlepiej użyć forwarda OnPlayerRunCmd i tam bez problemu to zrobić.
  3. Nie. Funkcja wyciszenia dźwięków działa na zasadzie wyciszenie kompletnie dźwięków stóp, przez convar sv_footsteps, potem manualnie wypuszcza dźwięki dla każdego kto chodzi przez emitsound, a jeśli przejdzie bool od ma_item/perk to następuje return Plugin_Handled; Zamiast puszczenia dźwięków. Trzeba poprawić samą funkcję wypuszczania dźwięków. Wystarczy usunąć plugin perku/klasy, która używa funkcji wyciszenia kroków i powróci do normy.
  4. Problemem jest wyciszanie kroków w klasie/perku. Po którymś z updatów powstał taki problem, co do tego problemu to idzie to fixnąć, ale trzeba trochę podziałać. Poza tym ta funkcja powinna być zagnieżdżona w silniku i kroki powinny być wyciszane/włączane za pomocą natywu, bez tego wyciszenie kroków będzie działać tylko na 1 klasie bądź perku, polecam Ci wykonać taką zmianę w silniku jeśli będziesz na nim pracował. Bądź co bądź jeśli nie uda Ci się rozwiązać problemu z wypuszczaniem dźwięku tego "pancerza" to będziesz zmuszony do usunięcia klasy/perku z tym.
  5. Wrzuć tutaj cały kod, który kompilujesz.
  6. Nie istnieje taka opcja, możesz jedynie wyświetlić komunikat o możliwości przejścia na inny serwer w konsoli gracza.
  7. Wszystko działa poprawnie, ranking wyświetla tylko tych co mają rozegranych łącznie conajmniej 200 aren, chyba że nie zrozumiałem i chcesz to zmienić, było to albo w cfg samego pluginu albo gdzieś w cfg plików www.
  8. Skąd pobierałeś plugin scp? Pobierz stąd i wtedy przetestuj poprzednie wersje, które dostałeś z czatem od scp. https://bitbucket.org/minimoney1/simple-chat-processor/downloads/
  9. Rozumiem, że czat wciąż nie działa? Może nie zauważyłem wcześniej, ale czy masz na pewno plugin SCP(Simple Chat Processor)? Bądź co bądź spróbuj tego kodu: public Action:OnChatMessage(&author, Handle:recipients, String:name[], String:message[]) { if (IsValidPlayer(author)) { if(GetUserFlagBits(author) & ADMFLAG_CUSTOM1 || CheckCommandAccess(author, "sm_komendaktoraniemusiistniec", ADMFLAG_CUSTOM1)) { Format(name, MAXLENGTH_NAME, "\x01[\x06C1 - VIP\x01]\x04 %s",name); return Plugin_Changed; } return Plugin_Continue; } return Plugin_Continue; } Czyli cały kod powinien wyglądać tak: #include <sourcemod> #include <sdktools> #include <cstrike> #include <sdkhooks> #include <scp> int g_fLastButtons[MAXPLAYERS+1]; int g_fLastFlags[MAXPLAYERS+1]; int g_iJumps[MAXPLAYERS+1]; public Plugin:myinfo = { name = "VIP Generator", author = "mastah7991", description = "Automatycznie wygenerowany VIP", version = "1.0", url = "MYGO.PL" } public OnPluginStart() { HookEvent("player_spawn", Event_PlayerSpawn); HookEvent("player_death", Event_PlayerDeath); } public OnClientPutInServer(client) { if (IsValidPlayer(client) && (GetUserFlagBits(client) & ADMFLAG_CUSTOM1)) { char name[32]; GetClientName(client,name,31); PrintToChatAll("{green}c1.BlackSquad.eu{default}: {lightgreen}Gracz VIP{default} %s {lightgreen}wszedl na serwer",name); } } public Action:Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) { int client = GetClientOfUserId(GetEventInt(event, "userid")); if (IsValidPlayer(client) && (GetUserFlagBits(client) & ADMFLAG_CUSTOM1)) { SetEntityHealth(client, GetEntProp(client, Prop_Send, "m_iHealth")+20); SetEntProp(client, Prop_Send, "m_iAccount", GetEntProp(client, Prop_Send, "m_iAccount")+250); SetEntityGravity(client, 0.85); int iWeapon = GetPlayerWeaponSlot(client, 1); if (iWeapon > 0) { RemovePlayerItem(client, iWeapon); AcceptEntityInput(iWeapon, "Kill"); GivePlayerItem(client, "weapon_deagle"); } } } public Action:Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast) { int client = GetClientOfUserId(GetEventInt(event, "userid")); bool headshot = GetEventBool(event, "headshot"); if (IsValidPlayer(client) && (GetUserFlagBits(client) & ADMFLAG_CUSTOM1)) { SetEntityHealth(client, GetEntProp(client, Prop_Send, "m_iHealth")+5); if(headshot) SetEntityHealth(client, GetEntProp(client, Prop_Send, "m_iHealth")+15); if(GetEntProp(client, Prop_Send, "m_iHealth")>180) SetEntityHealth(client, 180); SetEntProp(client, Prop_Send, "m_iAccount", GetEntProp(client, Prop_Send, "m_iAccount")+100); if(headshot) SetEntProp(client, Prop_Send, "m_iAccount", GetEntProp(client, Prop_Send, "m_iAccount")+300); } } public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon) { if(IsValidPlayer(client)&&GetUserFlagBits(client)&(1<<ADMFLAG_CUSTOM1)) { int fCurFlags = GetEntityFlags(client); int fCurButtons = GetClientButtons(client); if (g_fLastFlags[client] & FL_ONGROUND) { if (!(fCurFlags & FL_ONGROUND) &&!(g_fLastButtons[client] & IN_JUMP) && fCurButtons & IN_JUMP) { g_iJumps[client]++; } } else if (fCurFlags & FL_ONGROUND) { g_iJumps[client] = 0; } else if (!(g_fLastButtons[client] & IN_JUMP) && fCurButtons & IN_JUMP) { if ( 1 <= g_iJumps[client] <= 1) { g_iJumps[client]++; float vVel[3]; GetEntPropVector(client, Prop_Data, "m_vecVelocity", vVel); vVel[2] = 250.0; TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, vVel); } } g_fLastFlags[client] = fCurFlags; g_fLastButtons[client] = fCurButtons; } } public Action:OnChatMessage(&author, Handle:recipients, String:name[], String:message[]) { if (IsValidPlayer(author)) { if(GetUserFlagBits(author) & ADMFLAG_CUSTOM1 || CheckCommandAccess(author, "sm_komendaktoraniemusiistniec", ADMFLAG_CUSTOM1)) { Format(name, MAXLENGTH_NAME, "\x01[\x06C1 - VIP\x01]\x04 %s",name); return Plugin_Changed; } return Plugin_Continue; } return Plugin_Continue; } stock bool IsValidPlayer(client) { if(client >= 1 && client <= MaxClients && IsClientConnected(client) && !IsFakeClient(client) && IsClientInGame(client) ) return true; return false; }
  10. Błędy wymagają minimalnej wiedzy z języka angielskiego :P Błąd sugeruje Ci o braku biblioteki colors.inc w folderze includes
  11. Includy załączasz zawsze na początku pluginu, np. za #include <sourcemod> -> includy zawierają funkcje, które możesz użyć w swoim pluginie. W twoi przypadku będzie wyglądać to tak: na samej górze pluginu: #include <colors> //gdzieś w pluginie CPrintToChatAll("{RED}=============================================== \n{GREEN}OBECNIE GRAMY TYLKO BOMBSITE %s \n{RED}===============================================",BSAL);
  12. Zapożycz kod z pluginów od auto-balansu.
  13. Kiedyś przy rozpoczęciu nauki sourcepawna pisałem takie coś pod 2 teamy, nie pamiętam czy to nie miało jakichś bugów, ale wiem że jakoś działało na pewno. Obecnie jak pisałbym to na pewno zrobiłbym to przy użyciu array list. #include <sourcemod> #include <sdkhooks> #include <sdktools> #include <cstrike> #include <csgocolors> #define MENU_TIME_LENGTH 15 #pragma newdecls required public Plugin myinfo = { name = "Wojny Gangów", author = "CamerDisco", description = "Wojny Gangów", version = "1.1", url = "https://max-play.pl" }; char Entities[][] = {"func_door", "func_door_rotating"}; bool Open = false; bool wiad = true; bool zabawaon = false; bool wystartowalo = false; bool jestok = false; bool wgangu1[MAXPLAYERS +1]; bool wgangu2[MAXPLAYERS +1]; float g_fDistance; Handle sprawdzajj = INVALID_HANDLE; Handle round_timer = INVALID_HANDLE; Handle wiadomoscc = INVALID_HANDLE; Handle pokazz = INVALID_HANDLE; int gI_Time; int g_iFilteredEntity = -1; int g_WeaponParent; ConVar g_Cvar_Distance; public void OnPluginStart() { RegConsoleCmd("sm_gangi", gangi); //RegConsoleCmd("sm_team1", tm1); //RegConsoleCmd("sm_team2", tm2); g_WeaponParent = FindSendPropOffs("CBaseCombatWeapon", "m_hOwnerEntity"); HookEvent("round_start", Event_RoundStart); HookEvent("round_end", Event_RoundEnd); HookEvent("player_death", Event_PlayerDeath); g_Cvar_Distance = CreateConVar("sm_aimnames_distance", "100.0", "(Default: 100) Distance in meters for showing aim names."); g_fDistance = g_Cvar_Distance.FloatValue; } public Action Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast) { int victim = GetClientOfUserId(GetEventInt(event, "userid")); if(wgangu1[victim]) wgangu1[victim] = false; if(wgangu2[victim]) wgangu2[victim] = false; } public Action gangi(int client, int args) { if(GetClientTeam(client) == CS_TEAM_CT || GetUserFlagBits(client) & ADMFLAG_ROOT || GetUserFlagBits(client) & ADMFLAG_GENERIC) { glowne(client); } else { CPrintToChat(client, "{GREEN}[Wojny Gangów]{NORMAL} Tylko {BLUE}CT{NORMAL} może włączać tą zabawę!"); } } public void OnClientPutInServer(int client) { SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage); } public void OnClientDisconnect(int client) { SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage); } public void glowne(int client) { Handle menu = CreateMenu(MenuHandler_WYB); SetMenuTitle(menu, "Zabawa Wojny Gangów:"); if(!zabawaon) { AddMenuItem(menu, "on", "Włącz zabawę"); } AddMenuItem(menu, "off", "Wyłącz zabawę"); if(!wystartowalo && zabawaon) { AddMenuItem(menu, "team1", "Wybierz osobę do gangu czerw."); AddMenuItem(menu, "team2", "Wybierz osobę do gangu ziel."); AddMenuItem(menu, "team3", "Usuń osobę z gangu czerw."); AddMenuItem(menu, "team4", "Usuń osobę z gangu ziel."); AddMenuItem(menu, "ust", "Ustawiłem"); } DisplayMenu(menu, client, MENU_TIME_LENGTH); } public bool IsValidClient(int client) { if(client >= 1 && client <= MaxClients && IsClientInGame(client) && IsClientConnected(client) && IsPlayerAlive(client)) return true; return false; } public int MenuHandler_WYB(Handle menu, MenuAction action, int param1, int param2) { if (action == MenuAction_Select) { int client = param1; char info[32]; GetMenuItem(menu, param2, info, sizeof(info)); if (StrEqual(info, "on")) { for (int client2 = 1; client2<= MaxClients; client2++) { if(IsValidClient(client2)) { pokazz = CreateTimer(0.1, pokaz, client2, TIMER_REPEAT); } } zabawaon = true; CPrintToChatAll("{GREEN}[Wojny Gangów]{NORMAL} Wojna gangów została włączona przez {RED}%N", client); CPrintToChatAll("{GREEN}[Wojny Gangów]{NORMAL} Otwieram cele..."); opencells(); CPrintToChatAll("{GREEN}[Wojny Gangów]{NORMAL} Czekamy na wybranie drużyn przez {RED}prowadzącego."); wiadomoscc = CreateTimer(1.0, wiadomosc, _, TIMER_REPEAT); OpenTeam1Menu(client); } if (StrEqual(info, "off")) { CPrintToChatAll("{GREEN}[Wojny Gangów]{NORMAL} Wojna gangów została wyłączona przez {RED}%N", client); zabawaon = false; for (int i = 1; i <= MaxClients; i++) { if(IsValidClient(i)) { SetEntityRenderColor(i, 255, 255, 255, 255); } } zabawaon = false; Zabij(wiadomoscc); Zabij(pokazz); } if (StrEqual(info, "team1")) { if(!wystartowalo) { OpenTeam1Menu(client); } else { CPrintToChat(client, "{GREEN}[Wojna Gangów]{NORMAL} Za późno, drużyny zostały już wybrane i czekamy na rozpoczęcie zabawy!"); } } if (StrEqual(info, "team2")) { if(!wystartowalo) { OpenTeam2Menu(client); } else { CPrintToChat(client, "{GREEN}[Wojna Gangów]{NORMAL} Za późno, drużyny zostały już wybrane i czekamy na rozpoczęcie zabawy!") } } if (StrEqual(info, "team3")) { if(!wystartowalo) { OpenDelMenu(client); } else { CPrintToChat(client, "{GREEN}[Wojna Gangów]{NORMAL} Za późno, drużyny zostały już wybrane i czekamy na rozpoczęcie zabawy!") } } if (StrEqual(info, "team4")) { if(!wystartowalo) { OpenDel2Menu(client); } else { CPrintToChat(client, "{GREEN}[Wojna Gangów]{NORMAL} Za późno, drużyny zostały już wybrane i czekamy na rozpoczęcie zabawy!") } } if (StrEqual(info, "ust")) { if(!wystartowalo) { int count = 0; for(int i = 1; i <= MaxClients; i++) { if(IsValidClient(i) && wgangu1[i] == true || wgangu2[i] == true) { count++; } } if(count == 0) { jestok = false; } else { jestok = true; } if(jestok) { Zabij(wiadomoscc); wiad = true; round_timer = CreateTimer(1.0, counting, _, TIMER_REPEAT); wystartowalo = true; CreateTimer(31.0, zrup); CreateTimer(30.0, wlaczff); CPrintToChatAll("{GREEN}[Wojny Gangów]{NORMAL} Jesteście już podzieleni, rozdzielcie się i ustalcie swoją kryjówkę!"); for(int i = 1; i<=MaxClients; i++) { if(IsValidClient(client)) { DajBronie(i); } } } else { CPrintToChat(client, "{GREEN}[Wojny Gangów]{NORMAL} Potrzeba conajmniej {RED}1 gracza{NORMAL} w którymś z gangów!"); } } else { CPrintToChat(client, "{GREEN}[Wojna Gangów]{NORMAL} Wojna już została ustawiona wcześniej!"); } } } else if (action == MenuAction_End) { CloseHandle(menu); } } public Action zrup(Handle timer) { sprawdzajj = CreateTimer(2.0, sprawdzaj, _, TIMER_REPEAT); } public Action sprawdzaj(Handle hTimer) { int count_tt_alive_client; int iTTClient = 1; while (iTTClient <= MaxClients) { if (IsClientInGame(iTTClient) && IsPlayerAlive(iTTClient) && IsValidClient(iTTClient) && GetClientTeam(iTTClient) == 2 && wgangu2[iTTClient]==true) { count_tt_alive_client += 1; } iTTClient++; } int count_tt2_alive_client; int iTTClient2 = 1; while (iTTClient2 <= MaxClients) { if (IsClientInGame(iTTClient2) && IsPlayerAlive(iTTClient2) && IsValidClient(iTTClient2) && GetClientTeam(iTTClient2) == 2 && wgangu1[iTTClient2]==true) { count_tt2_alive_client += 1; } iTTClient2++; } if (count_tt_alive_client < 1) { Zabij(sprawdzajj); Zabij(pokazz); CPrintToChatAll("{GREEN}[Wojna Gangów]{NORMAL} Gang {LIGHTGREEN}zielonych{NORMAL} został rozbity! Kończymy {BLUE}zabawę!"); zabawaon = false; wystartowalo = false; ServerCommand("mp_teammates_are_enemies 0"); for(int i = 1;i<=MaxClients;i++) { if(IsValidClient(i) && GetClientTeam(i) == CS_TEAM_T) { SetEntityRenderMode(i, RENDER_TRANSCOLOR); SetEntityRenderColor(i, 255, 255, 255, 255); disarm(i); wgangu1[i] = false; wgangu2[i] = false; } } int maxent = GetMaxEntities(); char weapon[64]; for (int i=GetMaxClients(); i<maxent; i++) { if ( IsValidEdict(i) && IsValidEntity(i) ) { GetEdictClassname(i, weapon, sizeof(weapon)); if ( ( StrContains(weapon, "weapon_") != -1 || StrContains(weapon, "item_") != -1 ) && GetEntDataEnt2(i, g_WeaponParent) == -1 ) RemoveEdict(i); } } if (pokazz != INVALID_HANDLE) { CloseHandle(pokazz); pokazz = INVALID_HANDLE; } Zabij(round_timer); } else if (count_tt2_alive_client < 1) { Zabij(sprawdzajj); Zabij(pokazz); CPrintToChatAll("{GREEN}[Wojna Gangów]{NORMAL} Gang {RED}czerwonych{NORMAL} został rozbity! Kończymy {BLUE}zabawę!"); zabawaon = false; wystartowalo = false; ServerCommand("mp_teammates_are_enemies 0"); for(int i = 1;i<=MaxClients;i++) { if(IsValidClient(i) && GetClientTeam(i) == CS_TEAM_T) { SetEntityRenderMode(i, RENDER_TRANSCOLOR); SetEntityRenderColor(i, 255, 255, 255, 255); disarm(i); wgangu1[i] = false; wgangu2[i] = false; } } int maxent = GetMaxEntities(); char weapon[64]; for (int i=GetMaxClients(); i<maxent; i++) { if ( IsValidEdict(i) && IsValidEntity(i) ) { GetEdictClassname(i, weapon, sizeof(weapon)); if ( ( StrContains(weapon, "weapon_") != -1 || StrContains(weapon, "item_") != -1 ) && GetEntDataEnt2(i, g_WeaponParent) == -1 ) RemoveEdict(i); } } if (pokazz != INVALID_HANDLE) { CloseHandle(pokazz); pokazz = INVALID_HANDLE; } Zabij(round_timer); } } public void disarm(int id) { int disarme; for (int i = 0; i < 6; i++) { if (i < 6 && (disarme = GetPlayerWeaponSlot(id, i)) != -1) { RemovePlayerItem(id, disarme); GivePlayerItem(id, "weapon_knife"); } } } public Action counting(Handle Timer, any data) { gI_Time++; if (gI_Time < 31) { PrintHintTextToAll("<font color= '#ff4d4d'>[Wojny Gangów]</font> Do rozpoczęcia wojny pozostało:<font color='#00ff00'> %i sek.</font>", 30 - gI_Time); } } public Action wiadomosc(Handle timer, any client) { for (int i=1;i<=MaxClients;i++) { if(IsValidClient(i)) { if(!wiad && zabawaon && wgangu1[i]) { PrintHintText(i, "<font color='#ff6666'>[Wojny Gangów]</font> Jesteś w <font color='#ff5050'>gangu czerwonych</font>!"); } else if(!wiad && !zabawaon && wgangu2[i]) { PrintHintText(i, "<font color='#ff6666'>[Wojny Gangów]</font> Jesteś w <font color='#00cc00'>gangu zielonych</font>!"); } else { PrintHintText(i, "<font color='#ff6666'>[Wojny Gangów]</font> Czekamy na wybranie drużyn przez prowadzącego!"); } } } } public void DajBronie(int client) { Handle menu = CreateMenu(MenuHandler_M42); SetMenuTitle(menu, "Wybierz broń:"); AddMenuItem(menu, "m4", "M4A4"); AddMenuItem(menu, "m4s", "M4A1-S"); AddMenuItem(menu, "ak47", "AK-47"); AddMenuItem(menu, "awp", "AWP"); DisplayMenu(menu, client, MENU_TIME_LENGTH); } public int MenuHandler_M42(Handle menu, MenuAction action, int param1, int param2) { if (action == MenuAction_Select) { int client = param1; char info[32]; GetMenuItem(menu, param2, info, sizeof(info)); if (StrEqual(info, "m4")) { GivePlayerItem(client, "weapon_m4a1"); DajPistolet(client); } if (StrEqual(info, "m4s")) { GivePlayerItem(client, "weapon_m4a1_silencer"); DajPistolet(client); } if (StrEqual(info, "ak47")) { GivePlayerItem(client, "weapon_ak47"); DajPistolet(client); } if (StrEqual(info, "awp")) { GivePlayerItem(client, "weapon_awp"); DajPistolet(client); } } else if (action == MenuAction_End) { CloseHandle(menu); } } public void DajPistolet(int client) { Handle menu = CreateMenu(MenuHandler_M43); SetMenuTitle(menu, "Wybierz pistolet:"); AddMenuItem(menu, "usp", "USP-S"); AddMenuItem(menu, "p2", "P2000"); AddMenuItem(menu, "glock", "Glock-18"); AddMenuItem(menu, "deagle", "Deagle"); AddMenuItem(menu, "p250", "P250"); AddMenuItem(menu, "tec9", "Tec-9"); AddMenuItem(menu, "five", "Five-Seven"); DisplayMenu(menu, client, MENU_TIME_LENGTH); } public int MenuHandler_M43(Handle menu, MenuAction action, int param1, int param2) { if (action == MenuAction_Select) { int client = param1; char info[32]; GetMenuItem(menu, param2, info, sizeof(info)); if (StrEqual(info, "usp")) { GivePlayerItem(client, "weapon_usp_silencer"); } if (StrEqual(info, "p2")) { GivePlayerItem(client, "weapon_hkp2000"); } if (StrEqual(info, "glock")) { GivePlayerItem(client, "weapon_glock"); } if (StrEqual(info, "deagle")) { GivePlayerItem(client, "weapon_deagle"); } if (StrEqual(info, "p250")) { GivePlayerItem(client, "weapon_p250"); } if (StrEqual(info, "tec9")) { GivePlayerItem(client, "weapon_tec9"); } if (StrEqual(info, "five")) { GivePlayerItem(client, "weapon_fiveseven"); } } else if (action == MenuAction_End) { CloseHandle(menu); } } public Action Event_RoundEnd(Handle hEvent, const char[] sName, bool bDontBroadcast) { for(int i = 1; i<=MaxClients; i++) { wgangu1[i] = false; wgangu2[i] = false; } ServerCommand("mp_teammates_are_enemies 0"); Zabij(pokazz); Zabij(sprawdzajj); Zabij(wiadomoscc); } public void Zabij(Handle hName) { if (hName != INVALID_HANDLE) { KillTimer(hName); hName = INVALID_HANDLE; CloseHandle(hName); } } public Action Event_RoundStart(Handle hEvent, const char[] sName, bool bDontBroadcast) { TryClearData(); Open = false; zabawaon = false; wystartowalo = false; wiad = false; } public void TryClearData() { if (round_timer != INVALID_HANDLE) { CloseHandle(round_timer); round_timer = INVALID_HANDLE; } gI_Time = 0; } public Action opencells() { int iEnt = -1; for(int i; i < sizeof(Entities); i++) { while((iEnt = FindEntityByClassname(iEnt, Entities[i])) != -1) { AcceptEntityInput(iEnt, Open? "Close":"Open"); } } } public void OpenTeam1Menu(int client) { char sDisplayBuffer[128], sInfoBuffer[16], sTitle[64]; Format(sTitle, sizeof(sTitle), "Wybierz graczy do teamu1 :"); Menu MainMenu = new Menu(MainMenu_CallBack, MenuAction_Select | MenuAction_End); MainMenu.SetTitle(sTitle); for (int i = 1; i <= MaxClients; i++) { if (IsValidClient(i) && wgangu2[i] == false && wgangu1[i] == false && GetClientTeam(i) == CS_TEAM_T) { Format(sDisplayBuffer, sizeof(sDisplayBuffer), "%N", i); Format(sInfoBuffer, sizeof(sInfoBuffer), "%i", GetClientUserId(i)); MainMenu.AddItem(sInfoBuffer, sDisplayBuffer); } } DisplayMenu(MainMenu, client, MENU_TIME_FOREVER); } public int MainMenu_CallBack(Menu MainMenu, MenuAction action, int param1, int param2) { switch (action) { case MenuAction_Select: { char sInfo[128]; GetMenuItem(MainMenu, param2, sInfo, sizeof(sInfo)); int iTarget = GetClientOfUserId(StringToInt(sInfo)); SetEntityRenderMode(iTarget, RENDER_TRANSCOLOR); SetEntityRenderColor(iTarget, 113, 46, 44, 255); wgangu1[iTarget] = true; glowne(param1); CPrintToChat(iTarget, "{GREEN}[Wojny Gangów]{NORMAL} Zostałeś dodany do teamu {DARKRED}czerwonych.") CPrintToChat(param1, "Dodałeś gracza {GREEN}%N{NORMAL} do {RED}gangu czerwonych", iTarget); } case MenuAction_End: { CloseHandle(MainMenu); } } } public void OpenTeam2Menu(int client) { char sDisplayBuffer[128], sInfoBuffer[16], sTitle[64]; Format(sTitle, sizeof(sTitle), "Wybierz graczy do teamu2 :"); Menu MainMenu = new Menu(MainMenu_CallBack2, MenuAction_Select | MenuAction_End); MainMenu.SetTitle(sTitle); for (int i = 1; i <= MaxClients; i++) { if (IsValidClient(i) && wgangu2[i] == false && wgangu1[i] == false && GetClientTeam(i) == CS_TEAM_T) { Format(sDisplayBuffer, sizeof(sDisplayBuffer), "%N", i); Format(sInfoBuffer, sizeof(sInfoBuffer), "%i", GetClientUserId(i)); MainMenu.AddItem(sInfoBuffer, sDisplayBuffer); } } DisplayMenu(MainMenu, client, MENU_TIME_FOREVER); } public int MainMenu_CallBack2(Menu MainMenu, MenuAction action, int param1, int param2) { switch (action) { case MenuAction_Select: { char sInfo[128]; GetMenuItem(MainMenu, param2, sInfo, sizeof(sInfo)); int iTarget = GetClientOfUserId(StringToInt(sInfo)); SetEntityRenderMode(iTarget, RENDER_TRANSCOLOR); SetEntityRenderColor(iTarget, 0, 146, 0, 255); wgangu2[iTarget] = true; CPrintToChat(iTarget, "{GREEN}[Wojny Gangów]{NORMAL} Zostałeś dodany do teamu {LIGHTGREEN}zielonych.") glowne(param1); CPrintToChat(param1, "Dodałeś gracza {GREEN}%N{NORMAL} do {GREEN}gangu zielonych.", iTarget); } case MenuAction_End: { CloseHandle(MainMenu); } } } public void OpenDelMenu(int client) { char sDisplayBuffer[128], sInfoBuffer[16], sTitle[64]; Format(sTitle, sizeof(sTitle), "Usuń gracza z gangu czerw. :"); Menu MainMenu = new Menu(MainMenu_CallBack28, MenuAction_Select | MenuAction_End); MainMenu.SetTitle(sTitle); for (int i = 1; i <= MaxClients; i++) { if (IsValidClient(i) && wgangu1[i] == true) { Format(sDisplayBuffer, sizeof(sDisplayBuffer), "%N", i); Format(sInfoBuffer, sizeof(sInfoBuffer), "%i", GetClientUserId(i)); MainMenu.AddItem(sInfoBuffer, sDisplayBuffer); } } DisplayMenu(MainMenu, client, MENU_TIME_FOREVER); } public int MainMenu_CallBack28(Menu MainMenu, MenuAction action, int param1, int param2) { switch (action) { case MenuAction_Select: { char sInfo[128]; GetMenuItem(MainMenu, param2, sInfo, sizeof(sInfo)); int iTarget = GetClientOfUserId(StringToInt(sInfo)); SetEntityRenderMode(iTarget, RENDER_TRANSCOLOR); SetEntityRenderColor(iTarget, 255, 255, 255, 255); wgangu1[iTarget] = false; CPrintToChat(iTarget, "{GREEN}[Wojny Gangów]{NORMAL} Usunięto Cię z gangu {RED}czerwonych.") glowne(param1); CPrintToChat(param1, "Usunąłeś gracza {GREEN}%N{NORMAL} z {RED}gangu czerwonych.", iTarget); } case MenuAction_End: { CloseHandle(MainMenu); } } } public void OpenDel2Menu(int client) { char sDisplayBuffer[128], sInfoBuffer[16], sTitle[64]; Format(sTitle, sizeof(sTitle), "Usuń gracza z gangu ziel. :"); Menu MainMenu = new Menu(MainMenu_CallBack29, MenuAction_Select | MenuAction_End); MainMenu.SetTitle(sTitle); for (int i = 1; i <= MaxClients; i++) { if (IsValidClient(i) && wgangu2[i] == true) { Format(sDisplayBuffer, sizeof(sDisplayBuffer), "%N", i); Format(sInfoBuffer, sizeof(sInfoBuffer), "%i", GetClientUserId(i)); MainMenu.AddItem(sInfoBuffer, sDisplayBuffer); } } DisplayMenu(MainMenu, client, MENU_TIME_FOREVER); } public int MainMenu_CallBack29(Menu MainMenu, MenuAction action, int param1, int param2) { switch (action) { case MenuAction_Select: { char sInfo[128]; GetMenuItem(MainMenu, param2, sInfo, sizeof(sInfo)); int iTarget = GetClientOfUserId(StringToInt(sInfo)); SetEntityRenderMode(iTarget, RENDER_TRANSCOLOR); SetEntityRenderColor(iTarget, 255, 255, 255, 255); wgangu2[iTarget] = false; CPrintToChat(iTarget, "{GREEN}[Wojny Gangów]{NORMAL} Usunięto Cię z gangu {LIGHTGREEN}zielonych.") glowne(param1); CPrintToChat(param1, "Usunąłeś gracza {GREEN}%N{NORMAL} z {LIGHTGREEN}gangu zielonych.", iTarget); } case MenuAction_End: { CloseHandle(MainMenu); } } } public Action pokaz(Handle timer, any client) { if(zabawaon) { if(IsValidClient(client)) { int iTarget = GetClientAimTarget(client, true); float client_pos[3]; float target_pos[3]; if(IsValidClient(iTarget)) { GetClientEyePosition(client, client_pos); GetClientEyePosition(iTarget, target_pos); if (CanSeeTarget(client, client_pos, iTarget, target_pos, g_fDistance)) { if(wgangu1[iTarget]) { PrintHintText(client, "Gracz <font color='#3399ff'>%N</font> - w gangu <font color='#ff5050'>czerwonych</font>", iTarget); } else if(wgangu2[iTarget]) { PrintHintText(client, "Gracz <font color='#3399ff'>%N</font> - w gangu <font color='#00cc00'>zielonych</font>", iTarget); } else { PrintHintText(client, "Gracz <font color='#3399ff'>%N</font> - nie jest w <font color='#333300'>żadnym gangu</font>", iTarget); } } } } } else { Zabij(pokazz); } } public Action wlaczff(Handle timer) { ServerCommand("mp_teammates_are_enemies 1"); PrintHintTextToAll("<font color= '#ff4d4d'>[Wojny Gangów]</font> <font color='#00ff00'>Wojna rozpoczęta!</font>"); TryClearData(); } public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &weapon, float damageForce[3], float damagePosition[3], int damagecustom) { if (zabawaon == true) { if (wgangu1[victim] && wgangu1[attacker]) { PrintHintText(attacker, "Gracz %N jest też w <font color='#ff5050'>gangu czerwonych</font>, <font size='25'>NIE ZABIJESZ GO.</font>", victim); damage = float(0); return Plugin_Changed; } if(GetClientTeam(victim) == CS_TEAM_CT && GetClientTeam(attacker) == CS_TEAM_CT) { damage = float(0); return Plugin_Changed; } if (wgangu2[victim] && wgangu2[attacker]) { PrintHintText(attacker, "Gracz %N jest też w <font color='#00cc00'>gangu zielonych</font>, <font size='25'>NIE ZABIJESZ GO.</font>", victim); damage = float(0); return Plugin_Changed; } if (GetClientTeam(attacker) == CS_TEAM_T && GetClientTeam(victim) == CS_TEAM_CT) { PrintHintText(attacker, "To jest CT, on nie bierze udziału w zabawie, <font size='25'>NIE ZABIJESZ GO.</font>"); damage = float(0); return Plugin_Changed; } if (GetClientTeam(attacker) == CS_TEAM_CT && GetClientTeam(victim) == CS_TEAM_T && wystartowalo==true) { damage = float(0); return Plugin_Changed; } } return Plugin_Continue; } stock bool CanSeeTarget(any origin, float pos[3], any target, float targetPos[3], float range) { float fDistance; fDistance = GetVectorDistanceMeter(pos, targetPos); if (fDistance >= range) { return false; } Handle hTraceEx = INVALID_HANDLE; float hitPos[3]; g_iFilteredEntity = origin; hTraceEx = TR_TraceRayFilterEx(pos, targetPos, MASK_PLAYERSOLID, RayType_EndPoint, TraceFilter); TR_GetEndPosition(hitPos, hTraceEx); CloseHandle(hTraceEx); if (GetVectorDistanceMeter(hitPos, targetPos) <= 1.0) { return true; } return false; } stock float GetVectorDistanceMeter(const float vec1[3], const float vec2[3], bool squared=false) { return UnitToMeter(GetVectorDistance(vec1, vec2, squared)); } public bool TraceFilter(int ent, int contentMask) { return (ent == g_iFilteredEntity) ? false : true; } stock float UnitToMeter(float distance) { return distance / 50.00; } stock int GetTeam1Count() { int iAmmount = 0; for (int i = 1; i <= MaxClients; i++) { if (wgangu1[i] == true && IsPlayerAlive(i)) { iAmmount++; } } return iAmmount; } stock int GetTeam2Count() { int iAmmount = 0; for (int i = 1; i <= MaxClients; i++) { if (wgangu2[i] == true && IsPlayerAlive(i)) { iAmmount++; } } return iAmmount; }
  14. Zależy co rozumiesz poprzez wojnę gangów.
  15. https://forums.alliedmods.net/showthread.php?t=297630
  16. Błąd może również sugerować, że gdzieś jest niepotrzebny { wstawiony. Najlepiej załącz ten plik.
  17. To co podałeś to dane potrzebne do połączenia aby działały statystyki multi1v1, plugin używa do zapisu clientprefsów, jest prosty sposób aby to naprawić ale trzeba się domyślić
  18. Valve w jednym updacie zepsuło to i jeśli tych błędów ma nie być to muszą być tylko skiny istniejące rzeczywiście w grze, czyli np. awp -> asiimov jest ok, ale po ustawieniu awp -> doppler będą błędy. Używająca PTAHa próbowałem wyrzucić te błędy z konsoli, ale raczej nie będzie na to sposobu.
  19. Przy takim pluginie to czy jest po najnowszy sm czy nie to nie ma znaczenia, najpewniej nie masz scp, który jest wymagany do działania zagadek, chyba że masz jakąś inną wersję.
  20. W tym przypadku i tak jestem wręcz pewien, że jest błąd po stronie sourcemoda, jeśli chcesz uzyskać jakąkolwiek pomoc to czekam na log z http://crash.limetech.org/ Podaj też output z komend: sm version, meta version, sm exts list, sm plugins list
  21. Tutaj nie ma co nie działać, plugin jest prosty jak budowa cepa ;)
  22. Efekt można uzyskać za pomocą bardzo prostego pluginu #include <sourcemod> public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon, int &subtype, int &cmdnum, int &tickcount, int &seed, int mouse[2]) { if(!IsClientInGame(client) || !IsPlayerAlive(client)) return; if(buttons & IN_ATTACK) { char WeaponName[64]; GetClientWeapon(client, WeaponName, sizeof(WeaponName)); if(StrEqual(WeaponName, "weapon_awp")) { int aWeapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon"); if(aWeapon != -1) SetEntData(aWeapon, FindSendPropOffs("CWeaponCSBase", "m_iClip1"), 10); } } }
  23. Nie, po "surf_ski_2_GO" {} masz dodatkowy niepotrzebny bracket.
  24. camerdisco

    gamemod

    Gamemod pobiera z linii startowej, od tego zależy który plik gamemod wczyta, najprawdopodobniej masz podany w linii startowej inny gamemod, a komendy wrzuciłeś do innego gamemoda.
×
×
  • Dodaj nową pozycję...