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

live4net

Zasłużony
  • Postów

    676
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    108

Odpowiedzi opublikowane przez live4net

  1. Rejestracji jako takiej nie ma, wystarczy się zalogować za pomocą steam. Żadnych dodatkowych informacji nie trzeba wpisywać. W zasadzie to szybciej jest się zalogować za pomocą steam, niż wyciągnąć steamid z konta. Dodatkowo logowanie za pomocą steam, wyklucza pomyłkę w wpisywaniu steamid. W każdym razie, klient nasz Pan, więc przemyślę to i możliwe, że dodam w jednej z aktualizacji.

  2. Opis: Sprzedam, a w zasadzie zaprogramuję i będę hostować bota do CS:GO. Bot będzie przyjmować skiny, sprawdzać ich cenę w markecie i wysyłać informację do wskazanego systemu (sklep). Możliwość integracji z dowolnym sklepem/systemem. Wszystkie szczegóły są do dogadania. Programuję bota w taki sposób, w jaki klient sobie życzy. Nie udostępniam kodu źródłowego.

    Cena: 40-60 zł / miesiąc (w zależności od złożoności zlecenia i czasu opłacenia usługi)

    Płatność: Przelew / PSC / Skiny / PayPal

    Kontakt: PW lub steam

    Allegro: na życzenie kupującego

    Zdjęcia:  brak

     

     

  3.  

    Nowości w sklepie

    • Dodano obsługę CS 1.6, TF2, CSS
    • Dodano API do płatności PSC GoSetti (środki trafiają od razu na konto GoSetti)
    • Bot przyjmujący skiny został napisany całkowicie od nowa - działa znacznie stabilniej, przyjmuje więcej skinów na raz, znacznie szybciej przetwarza wymiany i znacznie rzadziej odrzuca oferty
    • Nowa wersja pluginu (1.2.7). Podczas aktualizacji należy skasować stary config, żeby config wygenerował się na nowo (doszły nowe cvary)
      • wybór czy VIP ma być wczytywany na początku mapy, czy podczas łączenia clienta
      • możliwość zmiany przedrostka sklepcs.pl na inny w menu usług
      • dodano native, który zwraca ilość dni do końca VIP - native int IleDniVip(int client)
    • Możliwość przypisania usług dodatkowych (np. zakup kredytów, expa, itp.) do konkretnego serwera. Usługa ta wyświetla się wtedy po wejściu w wybrany serwer, a nie w menu głównym
    • Dodano możliwość sortowania aktywnych usług
    • Dodano możliwość zmiany kolejności wyświetlania w menu wielu elementów (np. serwerów, usług, pakietów)
    • Dodano logi z czynności wykonywanych przez administratorów sklepu
  4. W funkcji OnTakeDamage nie masz parametru, który mówi o wciśniętym guziku. Dodatkowo poza sprawdzaniem czy broń ma w nazwie "knife" musisz też sprawdzić czy ma w nazwie bayonet (weapon_bayonet). Nie musisz też sprawdzać czy victim jest prawdziwym graczem, ponieważ nie da się zadać obrażeń graczywi, który nie istnieje lub jest nieprawidłowy. Ja napisał bym tą funkcję mniej więcej tak:

     

    public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype)  
    {
        if ( attacker>=1 && attacker<=MaxClients)
        {                                   
            char WeaponName[32];
            GetClientWeapon(attacker, WeaponName, sizeof(WeaponName));
            if (StrContains(WeaponName, "knife", false) != -1 || StrContains(WeaponName, "bayonet", false) != -1)
            {
              	if (damage <= 40.0) damage = 2.0;	//lewy
              	else damage = 1.0;	//prawy
    			return Plugin_Changed;
            }
        }
        return Plugin_Continue;
    } 

     

    Ma to oczywiście jeden bug - jeśli rzucisz granatem HE i zmienisz na kosę, to zostanie to policzone jako atak z noża. Możesz spróbować użyć:

     

    if (damagetype & DMG_SLASH)

     

    zamiast 

     

    if (StrContains(WeaponName, "knife", false) != -1 || StrContains(WeaponName, "bayonet", false) != -1)

    • Super! 1
  5. W tym kodzie bonus będzie losowany dopiero od drugiej rundy.

     

    #pragma semicolon 1
    
    #define DEBUG
    
    #define PLUGIN_AUTHOR "xFlane"
    #define PLUGIN_VERSION "1.00"
    
    #define NICKNAME_PART "" 
    
    #define PREFIX "[BONUS]"
    
    #include <sourcemod>
    #include <cstrike>
    #include <sdktools>
    
    #define CHANCE_TO_RECEIVE_MONEY 25
    #define CHANCE_TO_WEAPON CHANCE_TO_RECEIVE_MONEY + 25
    #define CHANCE_TO_KEVLAR CHANCE_TO_WEAPON + 25
    #define CHANCE_TO_ARMOR CHANCE_TO_KEVLAR + 25
    
    #pragma newdecls required
    
    int moneyGifts[] = 
    {
        100, 
        200, 
        300, 
        400, 
        500
    };
    
    char itemGifts[][] = 
    {
        "weapon_decoy", 
        "weapon_flashbang", 
        "weapon_hegrenade", 
        "weapon_incgrenade", 
        "weapon_molotov", 
        "weapon_smokegrenade", 
        "weapon_taser", 
        "weapon_tagrenade"
    };
    
    EngineVersion g_Game;
    
    public Plugin myinfo = 
    {
        name = "[SM] Nickname random gifts.", 
        author = PLUGIN_AUTHOR, 
        description = "", 
        version = PLUGIN_VERSION, 
        url = "http://steamcommunity.com/id/xflane/"
    };
    
    public void OnPluginStart()
    {
        g_Game = GetEngineVersion();
        if (g_Game != Engine_CSGO && g_Game != Engine_CSS)
        {
            SetFailState("This plugin is for CSGO/CSS only.");
        }
        
        HookEvent("player_spawn", Event_Spawn);
        HookEvent("round_start", Event_OnRoundStart);
    }
    
    public Action Event_Spawn(Event event, const char[] name, bool dontBroadcast)
    {
        int client = GetClientOfUserId(event.GetInt("userid"));
        
        char clientName[32];
        GetClientName(client, clientName, 32);
        
        if (StrContains(clientName, NICKNAME_PART) > -1 && GetTeamScore(CS_TEAM_CT) + GetTeamScore(CS_TEAM_T) > 0)
        {
            int num = 0;
            
            num = GetRandomInt(1, CHANCE_TO_ARMOR);
            if (num <= CHANCE_TO_RECEIVE_MONEY)
            {
                int money = moneyGifts[GetRandomInt(0, sizeof(moneyGifts) - 1)];
                PrintToChat(client, "%s Otrzymales \x04%i$\x01, bonusowe \x04%s\x01 za dopisek w nicku.", PREFIX, money, NICKNAME_PART);
                money += GetEntProp(client, Prop_Send, "m_iAccount");
                SetEntProp(client, Prop_Send, "m_iAccount", money > 16000 ? 16000 : money);
            }
            else if (num <= CHANCE_TO_WEAPON)
            {
                char weapon[32];
                strcopy(weapon, 32, itemGifts[GetRandomInt(0, sizeof(itemGifts) - 1)]);
                GivePlayerItem(client, weapon);
                ReplaceString(weapon, 32, "weapon_", "");
                PrintToChat(client, "%s Otrzymales \x04%s\x01, jako bonus \x04%s\x01 za dopisek w nicku.", PREFIX, weapon, NICKNAME_PART);
            }
            else if (num <= CHANCE_TO_KEVLAR)
            {
                SetEntProp(client, Prop_Send, "m_bHasHelmet", 1);
                PrintToChat(client, "%s Otrzymales \x04Kevlar\x01, jako bonus \x04%s\x01 za dopisek w nicku.", PREFIX, NICKNAME_PART);
            }
            else if (num <= CHANCE_TO_ARMOR)
            {
                SetEntProp(client, Prop_Send, "m_ArmorValue", 100);
                PrintToChat(client, "%s Otrzymales \x0Kamizelke\x01, jako bonus \x04%s\x01 za dopisek w nicku.", PREFIX, NICKNAME_PART);
            }
            
        }
        
        return Plugin_Continue;
    }

     

×
×
  • Dodaj nową pozycję...