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

Linux`

Użytkownik
  • Postów

    210
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    22

Treść opublikowana przez Linux`

  1. Nie można czegoś takiego od tak dodać. Za darmo raczej nikt ci tego też nie napisze, zgłoś się do zleceń płatnych to mogę to wykonać. To samo tyczy się apteczek, min, zdalnie detonowanych ładunków itp
  2. Usuń wszystko co wprowadziłeś i do nowej rundy dodaj: if(GetClientCount() >= 20) { for(new i = 1, max = GetMaxClients(); i <= max; ++ i) { if(!IsClientInGame(i) || !klasa_gracza[i]) continue; new doswiadczenie = 0; if(vip_gracza[i]) doswiadczenie += xp_kill_vip/2; // (opcjonalnie do ustawienia ilosc doswiadczenia) else doswiadczenie += xp_kill/2; PrintToChat(i, "[COD:MW] Premia %i doswiadczenia za +20 osob na serwerze.", doswiadczenie); DodajDoswiadczenie(i, doswiadczenie); } }
  3. Warto pamiętać też o tym, że jest coś takiego jak kwota wolna od podatku. Jeżeli prowadzimy sieć serwerów wyłącznie w celach hobbystycznych i nie traktujemy tego jako działalność dochodową a ponadto nie przekraczamy kwoty wolnej od podatku to nie ma się czym przejmować.
  4. A ja wiem dlaczego, masz złą składnie. Zamień AuthId_Engine na AuthId_Steam2
  5. trzeba przerobić ten plugin tak by nie blokował tej broni gdy gracz ma określoną flagę.
  6. Hookujesz początek rundy i ustawiasz tam zmienna która odpowiada ilości rund, potem wychwytujesz komendę zakupu hełmu czy innego przedmiotu i sprawdzasz czy zmienna przechwytująca rundy jest większa niż X, jeżeli tak to blokujesz komendę. A z statami graczy jest jeszcze prościej, zamiast zmiennej sprawdzającej ilość rund pobierasz np zabójstwa gracza i porównujesz czy są większe od Y.
  7. Musisz w public canuse dodać wyjątek dla zamiennika broni, tak by dana klasa mogła go podnosić. Zobacz jak to jest zrobione z klasą szturmen, gracz otrzymuje m4a1-s ale może podnosić też zwykłe m4a1. W tym przypadku zamiennikiem będzie najprawdopodobniej zwykły deagle.
  8. Powinno działać #include <sourcemod> #include <sdkhooks> #include <sdktools> #include <cstrike> public OnPluginStart() { CreateConVar("Clear Weapons", "1.0", "Linux`"); } public OnEntityCreated(entity, const String:classname[]) { if(entity > MaxClients && IsValidEntity(entity)) { if(!StrEqual(classname, "weapon_awp") && StrContains(classname, "weapon_", false) != -1) SDKHook(entity, SDKHook_Spawn, OnEntitySpawned); } } public Action:OnEntitySpawned(entity) { AcceptEntityInput(entity, "kill"); SDKUnhook(entity, SDKHook_Spawn, OnEntitySpawned); }
  9. Ten plugin blokuje podnoszenie broni, jeżeli dobrze cię zrozumiałem chodzi ci o całkowite ich usunięcie (z map, ekwipunku itp)?
  10. Do ustawień serwera dodaj te komendy host_name_store 1 host_info_show 2 host_players_show 2
  11. wykrywasz nową rundę i ustawiasz timer z zmienną którą resetujesz po upływie czasu
  12. Wykrywasz użycie komendy i sprawdzasz czy aktualnie trwa rozgrzewka, jeżeli tak to blokujesz funkcje.
  13. Ten błąd to nic innego jak informacja o braku modeli który wymaga mapa (pewnie niestandardowa?). Jeżeli ich nie ma to w miejscu modelu na mapie będzie wyświetlał się napis Error ale to tyle. Natomiast jeżeli chodzi o to o czym pisałeś wcześniej, używasz jakiś niestandardowych pluginów? Wyłącz wszystkie i sprawdź wtedy.
  14. No tak, dodaj jeszcze gdzieś na górze zmienna new client_gracza[MAX_PLAYERS+1] chyba już niczego nie pominąłem
  15. Ktoś mógłby napisać z tego poradnik, ja niestety nie mam czasu :(. Tworzysz zmienne gdzieś na górze new wymiana_gracza[MAX_PLAYERS+1], blokada_gracza[MAX_PLAYERS+1]; Następnie przy podłączeniu gracza do serwera resetujesz wartości wymiana_gracza[client] = 0; blokada_gracza[client] = 0; Potem rejestrujesz komendy else if(strcmp(text, "/daj", false) == 0 || strcmp(text, "/oddaj", false) == 0) OddajItem(client); else if(strcmp(text, "/wymien", false) == 0 || strcmp(text, "/zamien", false) == 0) WymienItem(client); else if(strcmp(text, "/blokuj", false) == 0 || strcmp(text, "/blokada", false) == 0) ZablokujItem(client); I na koniec wklejasz gdzieś na dole public Action:OddajItem(client) { if(klasa_gracza[client]) { new Handle:menu = CreateMenu(OddajItem_Handler); SetMenuTitle(menu, "Oddaj Item:"); for(new i = 1; i <= MaxClients; i++) { if(!IsClientInGame(i) || i == client) continue; AddMenuItem(menu, nazwa_gracza[i], nazwa_gracza[i]); } DisplayMenu(menu, client, 250); } else PrintToChat(client, "[COD:MW] Musisz miec wybrana klase aby moc oddac item!"); } public OddajItem_Handler(Handle:classhandle, MenuAction:action, client, Position) { if(action == MenuAction_Select) { new String:Item[64]; GetMenuItem(classhandle, Position, Item, sizeof(Item)); Position ++; new userid = FindTarget(0, Item); if(!IsValidClient(userid) || userid == -1) PrintToChat(client, "[COD:MW] Nie odnaleziono wybranego gracza!"); else if(!klasa_gracza[userid]) PrintToChat(client, "[COD:MW] Wybrany gracz musi miec klase by moc mu przekazac item!"); else if(informacje_itemu_gracza[userid][0]) PrintToChat(client, "[COD:MW] Wybrany gracz ma juz item!"); else if(!informacje_itemu_gracza[client][0]) PrintToChat(client, "[COD:MW] Nie masz zadnego itemu!"); else { new String:nazwa[512]; Format(nazwa, sizeof(nazwa), "Czy chcesz przyjac item od %s?", nazwa_gracza[client]); new Handle:menu = CreateMenu(OddajItem_Handler2); SetMenuTitle(menu, nazwa); AddMenuItem(menu, "1", "Tak"); AddMenuItem(menu, "2", "Nie"); DisplayMenu(menu, userid, 250); client_gracza[userid] = client; } } else if(action == MenuAction_End) CloseHandle(classhandle); } public OddajItem_Handler2(Handle:classhandle, MenuAction:action, client, Position) { if(action == MenuAction_Select) { new String:Item[32]; GetMenuItem(classhandle, Position, Item, sizeof(Item)); new userid = client_gracza[client]; if(StrEqual(Item, "1")) { if(!IsValidClient(userid)) PrintToChat(client, "[COD:MW] Nie odnaleziono wybranego gracza!"); else if(!klasa_gracza[userid]) PrintToChat(client, "[COD:MW] Wybrany gracz musi miec klase by moc od niego odebrac item!"); else if(!informacje_itemu_gracza[userid][0]) PrintToChat(client, "[COD:MW] Wybrany gracz nie ma zadnego itemu!"); else if(informacje_itemu_gracza[client][0]) PrintToChat(client, "[COD:MW] Masz juz item!"); else { DajItem(client, informacje_itemu_gracza[userid][0]); informacje_itemu_gracza[client][1] = informacje_itemu_gracza[userid][1]; UsunItem(userid); PrintToChatAll("[COD:MW] Gracz %s przekazal item graczowi %s.", nazwa_gracza[userid], nazwa_gracza[client]); } } else if(StrEqual(Item, "2")) { if(IsValidClient(userid)) PrintToChat(userid, "[COD:MW] Wybrany gracz nie zgodzil sie na przyjecie itemu!"); } } else if(action == MenuAction_End) CloseHandle(classhandle); } public Action:WymienItem(client) { if(klasa_gracza[client]) { new Handle:menu = CreateMenu(WymienItem_Handler); SetMenuTitle(menu, "Oddaj Item:"); for(new i = 1; i <= MaxClients; i++) { if(!IsClientInGame(i) || i == client) continue; AddMenuItem(menu, nazwa_gracza[i], nazwa_gracza[i]); } DisplayMenu(menu, client, 250); } else PrintToChat(client, "[COD:MW] Musisz miec wybrana klase aby moc wymienic item!"); } public WymienItem_Handler(Handle:classhandle, MenuAction:action, client, Position) { if(action == MenuAction_Select) { new String:Item[64]; GetMenuItem(classhandle, Position, Item, sizeof(Item)); Position ++; new userid = FindTarget(0, Item); if(!IsValidClient(userid) || userid == -1) PrintToChat(client, "[COD:MW] Nie odnaleziono wybranego gracza!"); else if(!klasa_gracza[userid]) PrintToChat(client, "[COD:MW] Wybrany gracz musi miec klase by moc mu przekazac item!"); else if(!informacje_itemu_gracza[userid][0]) PrintToChat(client, "[COD:MW] Wybrany gracz nie ma zadnego itemu!"); else if(!informacje_itemu_gracza[client][0]) PrintToChat(client, "[COD:MW] Nie masz zadnego itemu!"); else if(informacje_itemu_gracza[client][0] == informacje_itemu_gracza[userid][0]) PrintToChat(client, "[COD:MW] Nie mozesz wymienic swojego itemu na ten sam!"); else if(wymiana_gracza[userid]) PrintToChat(client, "[COD:MW] Wybrany gracz wymienial juz swoj item!"); else if(wymiana_gracza[client]) PrintToChat(client, "[COD:MW] Mozesz wymienic item tylko raz na mape!"); else if(blokada_gracza[userid]) PrintToChat(client, "[COD:MW] Wybrany gracz zablokowal wymiane itemu!"); else if(blokada_gracza[client]) PrintToChat(client, "[COD:MW] Masz zablokowana wymiane itemu!"); else { new String:nazwa[512]; Format(nazwa, sizeof(nazwa), "Czy chcesz wymienic swoj item na %s z graczem %s?", nazwy_itemow[informacje_itemu_gracza[client][0]], nazwa_gracza[client]); new Handle:menu = CreateMenu(WymienItem_Handler2); SetMenuTitle(menu, nazwa); AddMenuItem(menu, "1", "Tak"); AddMenuItem(menu, "2", "Nie"); DisplayMenu(menu, userid, 250); client_gracza[userid] = client; } } else if(action == MenuAction_End) CloseHandle(classhandle); } public WymienItem_Handler2(Handle:classhandle, MenuAction:action, client, Position) { if(action == MenuAction_Select) { new String:Item[32]; GetMenuItem(classhandle, Position, Item, sizeof(Item)); new userid = client_gracza[client]; if(StrEqual(Item, "1")) { if(!IsValidClient(userid)) PrintToChat(client, "[COD:MW] Nie odnaleziono wybranego gracza!"); else if(!klasa_gracza[userid]) PrintToChat(client, "[COD:MW] Wybrany gracz musi miec klase by moc od niego odebrac item!"); else if(!informacje_itemu_gracza[userid][0]) PrintToChat(client, "[COD:MW] Wybrany gracz nie ma zadnego itemu!"); else if(!informacje_itemu_gracza[client][0]) PrintToChat(client, "[COD:MW] Nie masz zadnego itemu!"); else if(informacje_itemu_gracza[client][0] == informacje_itemu_gracza[userid][0]) PrintToChat(client, "[COD:MW] Nie mozesz wymienic swojego itemu na ten sam!"); else if(wymiana_gracza[userid]) PrintToChat(client, "[COD:MW] Wybrany gracz wymienial juz swoj item!"); else if(wymiana_gracza[client]) PrintToChat(client, "[COD:MW] Mozesz wymienic item tylko raz na mape!"); else if(blokada_gracza[userid]) PrintToChat(client, "[COD:MW] Wybrany gracz zablokowal wymiane itemu!"); else if(blokada_gracza[client]) PrintToChat(client, "[COD:MW] Masz zablokowana wymiane itemu!"); else { new item_zmienny[4]; item_zmienny[0] = informacje_itemu_gracza[userid][0]; item_zmienny[1] = informacje_itemu_gracza[client][0]; item_zmienny[2] = informacje_itemu_gracza[userid][1]; item_zmienny[3] = informacje_itemu_gracza[client][1]; DajItem(client, item_zmienny[0]); DajItem(userid, item_zmienny[1]); informacje_itemu_gracza[client][1] = item_zmienny[2]; informacje_itemu_gracza[userid][1] = item_zmienny[3]; wymiana_gracza[userid] = 1; wymiana_gracza[client] = 1; PrintToChatAll("[COD:MW] Gracz %s oraz %s wymienili sie itemami.", nazwa_gracza[userid], nazwa_gracza[client]); } } else if(StrEqual(Item, "2")) { if(IsValidClient(userid)) PrintToChat(userid, "[COD:MW] Wybrany gracz nie zgodzil sie na wymiane itemu!"); } } else if(action == MenuAction_End) CloseHandle(classhandle); } Byłbym zapomniał, pod tym kodem jeszcze dodaj to public Action:ZablokujItem(client) { if(klasa_gracza[client]) { if(blokada_gracza[client]) { PrintToChat(client, "[COD:MW] Odblokowales wymiane itemow."); blokada_gracza[client] = 0; } else { PrintToChat(client, "[COD:MW] Zablokowales wymiane itemow."); blokada_gracza[client] = 1; } } else PrintToChat(client, "[COD:MW] Musisz miec wybrana klase aby moc zablokowac wymiane itemow!"); }
  16. Niestety podmianę modeli broni bym ci radził odpuścić ze względu na politykę valve. Zbanują ci serwer i tak się to skończy. Co do wymiany, wrzucę jak amxx zacznie działać bo miałem tam to zapisane na pw a płytki z plikami nie będę teraz szukać.
  17. #include <sourcemod> #include <sdktools> new String:mapa_serwera[64]; public Plugin:myinfo = { name = "Brak Pistoletow", author = "DUPA", description = "Brak Pistoletow", version = "1.4", url = "www.dupa.pl" } public OnPluginStart() { HookEvent("player_spawn", EventPlayerSpawned, EventHookMode_Post); } public OnMapStart() { GetCurrentMap(mapa_serwera, sizeof(mapa_serwera)); } public Action:EventPlayerSpawned(Handle:event,const String:name[],bool:dontBroadcast) { if(StrContains(mapa_serwera, "awp_", false) != -1) { new client = GetClientOfUserId(GetEventInt(event, "userid")); new weapon = GetPlayerWeaponSlot(client, 1); if (IsValidEdict(weapon)) { RemovePlayerItem(client, weapon); RemoveEdict(weapon); } } return Plugin_Continue; } Będzie działać tylko na mapach z przedrostkiem awp_
  18. Oświeć mnie w takim razie panie sporo wiedzący, jak można utrzymać stale fpsy na serwerze który stoi na maszynie z dynamicznie przydzielanymi zasobami? Z posiadania mojej wiedzy, nie jest to osiągalne. Ale zresztą nie tego temat dotyczy więc nie ma co się wdrążać w dyskusję, po prostu się mylisz.
  19. Przy tej wirtualizacji raczej o serwerach gier można tylko pomarzyć. Aczkolwiek pod bazę albo stronę, czemu nie.
  20. Tylko te ktore wylatuja na ziemie, tzn luski. Ich raczej nie zmienisz poprzez plugin.
  21. Niedoczytanie, chodzi o css. To bedzie tak, resetowanie kevlaru if(GetEntProp(client, Prop_Send, "m_ArmorValue")) SetEntProp(client, Prop_Send, "m_ArmorValue", 0);
  22. Tak, jest taka mozliwosc. Moge napisac takowy plugin na zlecenie, jezeli jestes zainteresowany to skontaktuj sie ze mna poprzez pw.
×
×
  • Dodaj nową pozycję...