Skocz do zawartości
Witamy na FragArena.pl - Baw sie dobrze!








Właściciel

Volter

Właściciel
  • Liczba zawartości

    34
  • Wpisy z Chatbox

    24
  • Wpisy na ChatBox

    24
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    1
  • Czas Online

    1d 23h 41m 5s

Członek Administracji

Ten użytkownik należy do Administracji FragArena.pl

Ostatnia wygrana Volter w dniu 25 Lipca

Użytkownicy przyznają Volter punkty reputacji!

Reputacja

35 Życzliwy

1 obserwujący

O Volter

  • Tytuł
    Szczur Laboratoryjny
  • Urodziny 10/09/1996
  • Wpisy z Chatbox 24

Informacje

  • Płeć
    Mężczyzna

Ostatnie wizyty

156 wyświetleń profilu
  1. Zadaniem graczy jest rozprawienie się z nadciągającymi przeciwnikami, zanim przekroczą mapę, za pomocą broni, a także zbudowanie armat, które atakują ich, gdy przejdą blisko. Mod zapewnia również różnorodne pompowanie postaci, co pozwala wzmocnić obronę Polecenia say /info- informacja o fali say /respawn- odradza się say /shop- menu sklepu say /spec- przejdź do obserwatorów say /skill say /skills- pokaż statystyki say /menu nightvision- menu główne say /swap- przelej pieniądze Tower Defense.rar
  2. W tym modzie Terroryści działają jak duchy, a Antyterroryści jako łowcy. Każda drużyna ma swoje własne cechy Łowcy (CT): Broń: Usp, mp5, granat. Specjalne zdolności: brak. Zdrowie: 125 (można zmienić poprzez cvar ). Duchy (TE): Broń: tylko nóż. Specjalne umiejętności: umiejętność przechodzenia przez ściany niewidzialność, gdy się nie ruszasz duża prędkość ruchu Zdrowie: 30 (można zmienić poprzez cvar) Łowcy kontra duchy.rar
  3. Ten mod to mieszanka PUBG + Fortnite. Niektóre dźwięki i funkcje zostały zapożyczone z Fortnite - efekty dźwiękowe, granaty pulsacyjne i nie tylko, a inne funkcje z PUBG - ekran śmierci, czerwona strefa, hełmy, kevlar i nie tylko). Jeśli nadal nie rozumiesz, czym jest Battlegrounds, pozwól mi wyjaśnić w zasadzie mod: Gracze zaczynają latać po mapie w samolocie bez żadnych przedmiotów / broni. Mogą skakać, kiedy chcą, gdziekolwiek chcą. Po wylądowaniu na ziemi muszą najpierw wyciągnąć broń, aby bronić się przed wrogami. Mogą znaleźć broń o różnej rzadkości. W zależności od tego będą zadawać większe obrażenia wrogom. Mogą również znaleźć przedmioty, które pomogą im w zabawie, takie jak apteczka, kevlar itp. Ostatni ocalały ocalały wygrywa, możesz grać solo lub z niektórymi graczami po swojej stronie (duet, trio lub drużyna). Jako Prezentacja, looknijcie na Ten Film niestety nie w PL BattleRoyale Mod.rar
  4. Wziąłem się za Klasy Kolorem Zielonym Klasy od Nowa przepisane od nowa i Przerobione Kolorem Czerwonym coś Tam zmieniłem Zapraszam do Testowania Umarly Posiada 2 Rakiety oraz UMP 45 + (400 dmg). Szturmowiec Posiada 1 rakiete oraz M4A1 + (250) DMG Szeregowy AK 47 + 250DMG, Posiada LongJumpa, jest szybki Strateg Posiada 1/6 ze Scouta oraz Multi Skok i widzi niewidki Rebeliant 1/9 z XM014 + Ubranie Wroga + Respu u wroga 1/6 Powstaniec Ma 5 sekund niesmiertelnosci co runde, MAC10 260DMG + INT Pijany Grabarz Posiada Krowe 190 DMG + INT oraz 2 apteczki potrafi wskrzeszac Swoich Kamikadze Posiada cztery rakiety Wiertarke 270 DMG + INT Gdy zginie wybucha Zwinny Zolnierz 1/10 z ELITE oraz Glock 1/10 + Multi Jump Szybki Saper Posiada 3 miny oraz dodatkowe 190 dmg z P90 + INT Mag Posiada 2 FireBall, oraz dodatkowe 250 dmg z M4A1 Wiesniak Posiada dwie rakiety oraz dodatkowe 250 + INT dmg z MP5
  5. de_westwood de_dust2 de_lidl cs_alpin de_rats_1337 de_kabul de_dust de_dinaunion de_poland cs_assault_upc cs_estate cs_sauna de_dust2002 de_dustyaztec de_irak de_eldorado
  6. Data Startu Serwera przewidywana jest na Grudzień Do tego czasu proszę o branie Czynnego udziału w Testach, oraz w Głosowaniu na Serwer Przyczyną tak długiego Oczekiwania na START : Względy Techniczne Chciałbym Serwer Dopracować a to Zajmuję czasu Wdrążyć, oraz przemyśleć wasze propozycję Ostatnią kwestia, to Finanse aktualnie wszystko co Volter ma przeznacza na nowy Szablon A więc Serwer i jego Reklama musi Poczekać. Przyspieszenie Startu jest możliwe po uzyskaniu - większej kwoty.
  7. Głosuj na serwer CODMOD i zdobywaj Reputacje! Jak zagłosować? 1) Wchodzimy Klikając Tutaj 2) Klikamy przycisk "zagłosuj" po prawej stronie na dole. 4) Informujemy o oddanych głosie w tym temacie .
  8. Każdy z was który będzie Chciał na Okres Testów otrzyma Wszystkie dostępne Klasy Premium Wystarczy napisać do mnie na PW Podajac Nick Hasło Lub jesli posiada STEAM to SID
  9. Cześć w Tym Temacie proszę o wpisywanie wszystkich niedziałających Brakujących funkcji na COD'ie
  10. Volter

    przyjęte k1ll3r na kata!

    Nie widzę, tu przeciwskazań.
  11. Witajcie. Dziś nauczę Was, jak stworzyć klasę oraz perk pod serwer Call Of Duty: Modern Warfare 3 (czyt. COD NOWY) od QTM_Peyote. Zapewne niektórzy z Was wiedzą, że COD NOWY różni się od starszej wersji jedną istotną rzeczą, a mianowicie klasy oraz perki zawarte są w osobnym pluginie, nie tak jak to było w starej wersji (w samym silniku). Klasy oraz perki dopisuje się do pliku: "plugins_codmod.ini", więcej szczegółów poniżej. 1. Podłoże Oczywiście, bez podłoża nie będziecie mogli programować (czyt. pisać klas i perków). Według mnie, najlepszym (i darmowym) programem do pisania klas/perków jest Notepad++ (ma on wiele zastosowań, ale skupmy się na jednej, przejrzystym pisaniu). Ze względu na to, iż jestem dobrym człekiem, udostępniam Wam poradnik znaleziony w internecie, sam z niego korzystałem. Polecam zastosować się do punktów: 2. Ustawianie stylu (Styl do programowania); 7. TestFX Auto poprawianie tabulacji; 9. Auto podpowiadanie składni; 2. AMXX Scripting - wiedza ogólna Nie zaczynajcie bez ogólnej wiedzy o Scripting'u w języku PAWN. Jest to dość stary język i praktycznie nieużywany (wyjątki: CS 1.6, GTA: SA-MP), więc nie polecam nauki tego języka przyszłym programistom (chyba, że jako podstawa do zrozumienia programowania - wtedy jak najbardziej). Wszystkie dodatki, modyfikacje etc. piszemy w plikach o rozszerzeniu *.sma, a dzięki kompilatorowi, uzyskujemy pliki o rozszerzeniu *.amxx (zakodowane, tylko AMXModX może je odczytać). Niestety (a raczej stety), nie możemy uzyskać kodu źródłowego (czyt. pliku *.sma) z zakodowanego pliku *.amxx - dzięki temu unikamy wielu kradzieży pluginów. 3. Kompilator Jak już wspomniałem w pkt. 2, do sprawdzenia działalności naszego pluginu, będzie potrzebny nam kompilator. Wiele osób korzysta z kompilatora znajdującego się na stronie amxx.pl, lecz posiada on tylko podstawowe biblioteki (tak, biblioteki - powinny się Wam kojarzyć z DirectX), a do klas i perków potrzeba już kilka bibliotek stworzonych przez graczy. O bibliotekach nie musicie nic wiedzieć prócz: kiedy ich użyć. Łapcie link do mojego lokalnego kompilatora, posiada wszystkie biblioteki potrzebne do kompilacji klas i perków. By skompilować plugin, kopiujecie plik *.SMA do folderu: Szybka Kompilacja, po czym uruchamiacie "compile.exe". Jeśli Wasz plugin został dobrze napisany, plik skompilowany *.amxx pojawi się w folderze "compiled". Wgrywanie klas i perków podam pod koniec tego poradnika 4. Szablon klasy Piszesz klasę? Nie wiesz, jak zacząć? To proste. Załącz Notepad++ -> Skopiuj poniższy szablon -> Postępuj zgodnie z kolejnymi punktami. Jeśli nie potrzebujesz podpowiedzi, usuń z szablonu wszystko, co jest za "//" - pamiętaj na przyszłość, w języku PAWN "//" oznacza, by pominąć wszystko, co jest w tej linijce za tym znakiem. Jeśli chcesz wgrać klasę na serwer, nazwa pliku musi być następująca: codclass_tutajwpisznazweklasy.amxx // Biblioteki, ich nie ruszamy, znajdują się w każdym pluginie, nie tylko w klasach i perkach #include <amxmodx> #include <amxmisc> #include <codmod> // Informacje ogólne, pokazywane po wpisaniu /klasy new const nazwa[] = "Brak"; // Tu wpisujesz nazwę swojej klasy new const opis[] = "Opis"; // Tu wpisujesz opis swojej klasy (wyświetlany po wpisaniu /klasy) new const bronie = (1<<CSW_KNIFE); // Tu wpisujesz nazwy broni w taki sposób new const zdrowie = 0; // Tu wpisujesz, ile ma mieć życia (100 + stała [w tym przypadku 100+0]) new const kondycja = 0; // Tu wpisujesz, ile ma mieć kondycji (normalny bieg + stala [w tym przypadku brak dodatkowej kondycji]) new const inteligencja = 0; // Tu wpisujesz, ile ma mieć inteligencji (0 + stała [w tym przypadku 0+0]) new const wytrzymalosc = 0; // Tu wpisujesz, ile ma mieć wytrzymałości (0 + stała [w tym przypadku 0+0]) // Nie ruszaj! To ma być w każdej klasie! new ma_klase[33]; // Główny public, dzięki temu jesteśmy w stanie dodawać nowe modyfikacje np. niewidzialność itp. public plugin_init() { register_plugin(nazwa, "1.0", "Volter"); // Pola "nazwa" nie ruszamy, drugie pole to wersja, a trzecie to autor. cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); // Rejestrujemy klasę w silniku COD'a (patrz: Informacje ogólne) } // Public mówiący o aktywnej (na danym graczu [id]) klasie public cod_class_enabled(id) { ma_klase[id] = true; } // Public mówiący o dezaktywowanej (przez gracza [id]) klasie public cod_class_disabled(id) { ma_klase[id] = false; } 5. Bronie Zapewne kilku z Was zauważyło dość dziwny sposób dodawania broni. Nie będę tego opisywał, po prostu przy dodawaniu broni korzystacie z tabeli NAME. 6. Modyfikacje Każdy gracz COD MOD'a wie, że klasa z samymi atrybutami (życie, inteligencja, kondycja oraz wytrzymałość) jest beznadziejna, dlatego podam Wam fragmenty kodu, by uzyskać daną modyfikację (np. niewidzialność, brak grawitacji itp.). Wy jedynie musicie skopiować dany fragment do odpowiedniego miejsca (sugerujcie się szablonem). 6.1. Niewidzialność na każdej broni: #include <engine> public cod_class_enabled(id) { ma_klase[id] = true; set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 10); // Mamy przedział 0-255. 0 to jest całkowita niewidzialność, 255 - całkowita widzialność. Edytujemy 10. } public cod_class_disabled(id) { ma_klase[id] = false; set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255); // Tutaj musimy pozostawić 255. Ustawia to całkowitą widzialność gracza, gdy zmieni klasę. } 6.2. Niewidzialność na nożu: #include <codmod> #include <engine> public plugin_init() { register_event("CurWeapon","CurWeapon","be", "1=1"); } public CurWeapon(id) { if(!ma_klase[id]) return; new wid = read_data(2) // Id broni if(wid == CSW_KNIFE) { set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 10); // Jeśli ma nóż, jest niewidzialny: przedział 0-255 } else { set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255); // Jeśli nie, jest widzialny. } } 6.3. Zmniejszona grawitacja #include <codmod> #include <fakemeta> #include <engine> public plugin_init() { register_event("ResetHUD", "ResetHUD", "abe"); } public cod_class_enabled(id) { entity_set_float(id, EV_FL_gravity, 300.0/800.0); // Wartość od 0 do 800. Bodajże 400 to standardowa grawitacja. ma_klase[id] = true; } public cod_class_disabled(id) { entity_set_float(id, EV_FL_gravity, 800.0/800.0); ma_klase[id] = false; } public ResetHUD(id) { if(ma_klase[id]) entity_set_float(id, EV_FL_gravity, 300.0/800.0); } 6.4. Cichobiegi #include <codmod> #include <fun> public cod_class_enabled(id) { set_user_footsteps(id, 1); ma_klase[id] = true; } public cod_class_disabled(id) { set_user_footsteps(id, 0); ma_klase[id] = false; } 6.5. Ubranie wroga #include <cstrike> // Pod new ma_klase new CT_Skins[4][] = {"sas","gsg9","urban","gign"}; new Terro_Skins[4][] = {"arctic","leet","guerilla","terror"}; public cod_class_enabled(id) { ZmienUbranie(id, 0); } public cod_class_disabled(id) { ZmienUbranie(id, 1); } public ZmienUbranie(id,reset) { if (!is_user_connected(id)) return PLUGIN_CONTINUE; if (reset) cs_reset_user_model(id); else { new num = random_num(0,3); cs_set_user_model(id, (get_user_team(id) == 1)? CT_Skins[num]: Terro_Skins[num]); } return PLUGIN_CONTINUE; } 6.6. Szansa na zrespienie się u wroga #include <hamsandwich> public plugin_init() { RegisterHam(Ham_Spawn, "player", "Spawn", 1); } public Spawn(id) { if(!is_user_alive(id)) return; if(!ma_klase[id]) return; if(random_num(1,2) == 1) // Określasz, ile ma być % szans na zrespienie się u wroga. 1,1 oznacza 100%. 1,2 oznacza 50%. 1,3 oznacza ~34%. 1,4 oznacza 25%. 1,5 oznacza 20% itd, itd. { new CsTeams:team = cs_get_user_team(id); cs_set_user_team(id, (team == CS_TEAM_CT)? CS_TEAM_T: CS_TEAM_CT); ExecuteHam(Ham_CS_RoundRespawn, id); cs_set_user_team(id, team); } } 6.7. Szansa na zabicie z danej broni #include <hamsandwich> #include <codmod> #include <fun> public plugin_init() { RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage_JedenZ"); } public cod_class_enabled(id) { cod_give_weapon(id, CSW_GLOCK18); for(new i=0;i<11;i++) give_item(id,"ammo_556nato") } public cod_class_disabled(id) { cod_take_weapon(id, CSW_GLOCK18); } public fwTakeDamage_JedenZ(this, idInf, idAtt, Float:fDmg, dmgBits) { if(!is_user_alive(idAtt) || !ma_klase[idAtt] || !(dmgBits & (1<<1) ) || random_num(1, 5) != 1 ) // 1, 5 = 20%. 1, 4 = 25%. 1, 3 = 33%. 1, 2 = 50% itd., może być nawet 1, 100 czyli 1% return HAM_IGNORED; new weapon = get_user_weapon(idAtt); if(weapon == CSW_GLOCK18) SetHamParamFloat(4, float(get_user_health(this) + 1)); return HAM_HANDLED; } // Zamiast CSW_GLOCK dajemy broń, z której chcemy mieć 1/x szans na zabicie. 6.8. Odbijanie pocisków #include <hamsandwich> #include <codmod> #include <engine> #define DMG_BULLET (1<<1) new pozostale_strzaly[33]; public plugin_init() { RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); RegisterHam(Ham_Spawn, "player", "Spawn", 1); } public cod_class_enabled(id, wartosc) { pozostale_strzaly[id] = 1; } public cod_class_disabled(id) { ma_klase[id] = false; public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!ma_klase[this]) return HAM_IGNORED; if(pozostale_strzaly[this] > 0 && damagebits & DMG_BULLET) { pozostale_strzaly[this]--; return HAM_SUPERCEDE; } return HAM_IGNORED; } public Spawn(id) pozostale_strzaly[id] = 1; // Wszedzie, gdzie jest: pozostale_strzaly, zmieniasz wartość, ile pocisków ma odbijać. } 6.9. Rakiety #include <hamsandwich> #include <codmod> #include <engine> #define DMG_BULLET (1<<1) new sprite_blast; new ilosc_rakiet_gracza[33]; new poprzednia_rakieta_gracza[33]; public plugin_init() { register_touch("rocket", "*" , "DotykRakiety"); RegisterHam(Ham_Spawn, "player", "fwSpawn_Rakiety", 1); } public plugin_precache() { sprite_blast = precache_model("sprites/dexplo.spr"); precache_model("models/rpgrocket.mdl"); } public client_disconnect(id) { new entRakiety = find_ent_by_class(0, "rocket"); while(entRakiety > 0) { if(entity_get_edict(entRakiety, EV_ENT_owner) == id) remove_entity(entRakiety); entRakiety = find_ent_by_class(entRakiety, "rocket"); } } public cod_class_enabled(id, wartosc) { ilosc_rakiet_gracza[id] = 1; // Tutaj zmieniasz ilość rakiet } public cod_class_skill_used(id) { if (!ilosc_rakiet_gracza[id]) { client_print(id, print_center, "Wykorzystales juz wszystkie rakiety!"); } else { if(poprzednia_rakieta_gracza[id] + 2.0 > get_gametime()) { client_print(id, print_center, "Rakiet mozesz uzywac co 2 sekundy!"); // Zmieniając wartość 2.0, ustalasz po ilu sekundach można użyć następnej rakiety. } else { if (is_user_alive(id)) { poprzednia_rakieta_gracza[id] = floatround(get_gametime()); ilosc_rakiet_gracza[id]--; new Float: Origin[3], Float: vAngle[3], Float: Velocity[3]; entity_get_vector(id, EV_VEC_v_angle, vAngle); entity_get_vector(id, EV_VEC_origin , Origin); new Ent = create_entity("info_target"); entity_set_string(Ent, EV_SZ_classname, "rocket"); entity_set_model(Ent, "models/rpgrocket.mdl"); vAngle[0] *= -1.0; entity_set_origin(Ent, Origin); entity_set_vector(Ent, EV_VEC_angles, vAngle); entity_set_int(Ent, EV_INT_effects, 2); entity_set_int(Ent, EV_INT_solid, SOLID_BBOX); entity_set_int(Ent, EV_INT_movetype, MOVETYPE_FLY); entity_set_edict(Ent, EV_ENT_owner, id); VelocityByAim(id, 1000 , Velocity); entity_set_vector(Ent, EV_VEC_velocity ,Velocity); } } } } public fwSpawn_Rakiety(id) { if(is_user_alive(id)) ilosc_rakiet_gracza[id] = 1; // Tutaj również zmieniasz ilość posiadanych rakiet } public DotykRakiety(ent) { if (!is_valid_ent(ent)) return; new attacker = entity_get_edict(ent, EV_ENT_owner); new Float:fOrigin[3]; entity_get_vector(ent, EV_VEC_origin, fOrigin); new iOrigin[3]; for(new i=0;i<3;i++) iOrigin[i] = floatround(fOrigin[i]); message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin); write_byte(TE_EXPLOSION); write_coord(iOrigin[0]); write_coord(iOrigin[1]); write_coord(iOrigin[2]); write_short(sprite_blast); write_byte(32); write_byte(20); write_byte(0); message_end(); new entlist[33]; new numfound = find_sphere_class(ent, "player", 190.0, entlist, 32); for (new i=0; i < numfound; i++) { new pid = entlist[i]; if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid)) continue; cod_inflict_damage(attacker, pid, 55.0, 0.3, ent, (1<<24)); // Wartość 55.0 oznacza podstawowe DMG, a 0.3 to mnożnik inteligencji, czyli 1 w INT = 0,3DMG. } remove_entity(ent); } 6.10. Natychmiastowe przeładowanie // Nie pamiętam, która biblioteka była potrzebna, tak więc najlepiej wstawić wszystkie, a przy błędach z kompilatora, usunąć niepotrzebne. #include <codmod> #include <fun> #include <hamsandwich> #include <cstrike> #include <engine> #include <fakemeta> new const max_clip[31] = { -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 }; public plugin_init() { register_forward(FM_CmdStart, "CmdStart"); } public CmdStart(id, uc_handle) { if(!is_user_alive(id) || !ma_klase[id]) return FMRES_IGNORED; new buttons = get_uc(uc_handle, UC_Buttons); new oldbuttons = pev(id, pev_oldbuttons); new clip, ammo, weapon = get_user_weapon(id, clip, ammo); if(max_clip[weapon] == -1 || !ammo) return FMRES_IGNORED; if((buttons & IN_RELOAD && !(oldbuttons & IN_RELOAD) && !(buttons & IN_ATTACK)) || !clip) { cs_set_user_bpammo(id, weapon, ammo-(max_clip[weapon]-clip)); new new_ammo = (max_clip[weapon] > ammo)? clip+ammo: max_clip[weapon] set_user_clip(id, new_ammo); } return FMRES_IGNORED; } stock set_user_clip(id, ammo) { new weaponname[32], weaponid = -1, weapon = get_user_weapon(id, _, _); get_weaponname(weapon, weaponname, 31); while ((weaponid = engfunc(EngFunc_FindEntityByString, weaponid, "classname", weaponname)) != 0) if (pev(weaponid, pev_owner) == id) { set_pdata_int(weaponid, 51, ammo, 4); return weaponid; } return 0; } 6.11. Widzenie niewidzialnych #include <codmod> #include <fakemeta> #include <hamsandwich> public plugin_init() { register_forward(FM_AddToFullPack, "FwdAddToFullPack", 1) } public FwdAddToFullPack(es_handle, e, ent, host, hostflags, player, pSet) { if(!is_user_connected(host) || !is_user_connected(ent)) return; if(!ma_klase[host]) return; set_es(es_handle, ES_RenderAmt, 255.0); } 6.12. Wieksze DMG z broni #include <codmod> #include <hamsandwich> #define DMG_BULLET (1<<1) public plugin_init() { RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); } public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_klase[idattacker]) return HAM_IGNORED; if(get_user_team(this) != get_user_team(idattacker) && get_user_weapon(idattacker) == CSW_P90 && damagebits & DMG_BULLET) // CSW_P90 - zamiast tego wpisujesz broń, z jakiej ma być większe DMG. cod_inflict_damage(idattacker, this, 15.0, 0.0, idinflictor, damagebits); // Pierwsza wartość: 15.0 odpowiada za dodatkowe DMG, nie biorąc pod uwagę inteligencji, czyli np. z AWP bijesz po 105. Dasz tam wartość 15, to będziesz bił po 120. Druga wartość: w tym przypadku 0.0, odpowiada ilości dodatkowych DMG za 1 pkt inteligencji. Jeśli ustawimy tam wartość 1.0, za 1 INT będziemy bić o 1 DMG więcej. return HAM_IGNORED; } 6.13. Multi skok #include <fakemeta> new skoki[33]; public plugin_init() { register_forward(FM_CmdStart, "CmdStart"); } public CmdStart(id, uc_handle) { if(!is_user_alive(id) || !ma_klase[id]) return FMRES_IGNORED; new flags = pev(id, pev_flags); if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && skoki[id]) { skoki[id]--; new Float:velocity[3]; pev(id, pev_velocity,velocity); velocity[2] = random_float(265.0,285.0); set_pev(id, pev_velocity,velocity); } else if(flags & FL_ONGROUND) skoki[id] = 2; // W tym miejscu zmieniasz ilość skoków. return FMRES_IGNORED; } 6.14. Niewidzialność podczas kucania z każdą bronią oraz z bronią wybraną #include <codmod> #include <engine> #include <fakemeta> #include <hamsandwich> #include <cstrike> public plugin_init() { register_forward(FM_PlayerPreThink, "fwPrethink_Niewidzialnosc", 1); } public cod_class_disabled(id) { set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255); } public fwPrethink_Niewidzialnosc(id) { if(!ma_klase[id]) return; new button = get_user_button(id); if( button & IN_DUCK && get_user_weapon(id) == CSW_KNIFE) // Niewidzialność podczas kucania na nożu. Jeśli chcemy na innej broni zmieniamy CSW_KNIFE na inną broń. Jeśli chcemy niewidzialność podczas kucania (każda broń), usuwamy: "&& get_user_weapon(id) == CSW_KNIFE" { set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 10); } else { set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255); } } 6.15. 1/1 z PPM z Knife #include <hamsandwich> #include <engine> #define DMG_BULLET (1<<1) public plugin_init() { RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); } public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_klase[idattacker]) return HAM_IGNORED; if(get_user_weapon(idattacker) == CSW_KNIFE && damagebits & DMG_BULLET && !(get_user_button(idattacker) & IN_ATTACK)) cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits); return HAM_IGNORED; } 6.16 Longjumb #include <amxmodx> #include <amxmisc> #include <codmod> #include <fakemeta> new Float:ostatni_skok[33]; public cod_class_skill_used(id) { new flags = pev(id, pev_flags); if(flags & FL_ONGROUND && get_gametime() > ostatni_skok[id]+4.0) { ostatni_skok[id] = get_gametime(); new Float:velocity[3]; velocity_by_aim(id, 666+cod_get_user_intelligence(id), velocity); velocity[2] = random_float(265.0,285.0); set_pev(id, pev_velocity, velocity); } } 6.16 SpeedBroni #include <fakemeta_util> #include <hamsandwich> public plugin_init() { register_event("CurWeapon","eventCurWeapon", "b") } public eventCurWeapon(id) { if(!g_bMaKlase[id]) return PLUGIN_CONTINUE new iWeapon = read_data(2); new iEnt; static Float:fSpeedMultiplier = 0.2; // Ta wartosc oznacza przelicznik ktory okresla szybkosc wystrzelenia pojedynczej kuli if(iWeapon == CSW_M4A1) { iEnt = fm_find_ent_by_owner(-1, "weapon_m4a1", id) //ta wartosc oznacza M4 mozemy ja dowolnie zmienic set_pdata_float( iEnt, 46, ( get_pdata_float(iEnt, 46, 4) * fSpeedMultiplier), 4 ); set_pdata_float( iEnt, 47, ( get_pdata_float(iEnt, 47, 4) * fSpeedMultiplier), 4 ); } return PLUGIN_CONTINUE } 7. Szablon perku Piszesz perk? Nie wiesz, jak zacząć? To proste. Załącz Notepad++ -> Skopiuj poniższy szablon -> Postępuj zgodnie z kolejnymi punktami. Jeśli nie potrzebujesz podpowiedzi, usuń z szablonu wszystko, co jest za "//" . Jeśli chcesz wgrać perk na serwer, nazwa pliku musi być następująca: codperk_tutajwpisznazweperku.amxx // Biblioteki, tego nie ruszamy! To są standardowe biblioteki dla perków COD'a #include <amxmodx> #include <amxmisc> #include <codmod> // Informacje wyświetlane po wpisaniu /perki new const perk_name[] = "Nazwa"; // Nazwa perku new const perk_desc[] = "Opis"; // Opis perku // To musi być w każdym perku, nie ruszaj! new bool:ma_perk[33]; public plugin_init() { register_plugin(perk_name, "1.0", "Volter"); // perk_name zostawiasz, 1.0 to wersja, a "Volter" to autor. Można zmieniać do woli cod_register_perk(perk_name, perk_desc); // Rejestrujemy perk, nie ruszaj! Zawsze musi być! } // Jeśli gracz posiada dany perk to... public cod_perk_enabled(id) { ma_perk[id] = true; } // Jeśli gracz wyrzucił perk to... public cod_perk_disabled(id) { ma_perk[id] = false; } 8. Modyfikacje Niestety, tym razem nie podam gotowców. Większość modyfikacji macie wypisanych w pkt. 6. Nie obawiajcie się, w punkcie 9. podam Wam sposób, jak przerobić klasę na perk. Sugerujcie się tamtym sposobem, działa to na takiej zasadzie, lecz tutaj będzie mniej zmieniania. 9. Przerobienie klasy na perk Tak, jak obiecałem, podaję sposób, jak przerobić klasę na perk. Niekiedy trzeba pomyśleć głową, ale najczęściej wystarczy zastosować się do poniższych rad: 1. Załącz kod interesującej Cię klasy (codclass_*.sma) 2. Biblioteki zostaw w spokoju, nie zmieniaj ich! 3. Zmień szablon klasy na szablon perku (pamiętaj, by nie zmieniać bibliotek!) 4. Wciśnij CTRL+F oraz przejdź do zakładki Zamień 5. W polu "Szukany tekst" (S) wpisz: klase, a w polu "Zamień na:" (Z) wpisz: perk, po czym wciśnij "Zamień wszystkie" 6. W polu S wpisz: class, a w polu Z wpisz: perk, po czym wciśnij "Zamień Wszystkie" 7. W polu S wpisz: klasa, a w polu Z wpisz: perk, po czym wciśnij "Zamień Wszystkie" 8. Skompiluj plugin lokalnym kompilatorem (patrz pkt. 3). *** UWAGA! Nie przejmuj się, jeżeli nie będziesz mógł/mogła spełnić pkt. 5, 6 lub 7. Wtedy pomijasz ten punkt 10. Jak wgrać klasę lub perk na serwer? To proste. Ściągasz program do FTP (ja osobiście używam WinSCP), łączysz się z FTP (dane znajdziesz na Pukawce lub innej serwerowni, w której kupiłeś/aś serwer), wgrywasz silnik COD'a (tutaj linku nie podam, iż na internecie znajduje się wiele silników, jak i paczek. Każdy wybierze to, co lubi), po czym wchodzisz w taki plik: cstrike/addons/amxmodx/configs/plugins-codmod.ini Pamiętaj, by plik ten otworzyć w Notepad++! Struktura tego pliku jest następująca: ;Call of Duty Mod QTM_CodMod.amxx // Tutaj wpisujesz swoją wersję silnika, nazwa może się różnić, lecz zazwyczaj jest to QTM_CodMod.amxx ;Inne // Tutaj wpisujesz pluginy, które nie są ani klasami, ani perkami, lecz wymagają wpisania ich w to miejsce (instrukcja instalacji pluginu) *.amxx ;Klasy //Mega Premium Flaga *, tutaj wpisujesz sobie klasy Mega Premium (jeżeli Twój serwer posiada tylko klasy Premium, zostawiasz sobie tylko tabelę z klasami Premium) codclass_*.amxx //Max Premium Flaga *, tutaj wpisujesz sobie klasy Max Premium (jeżeli Twój serwer posiada tylko klasy Premium, zostawiasz sobie tylko tabelę z klasami Premium) codclass_*.amxx //Normal Premium Flaga *, tutaj wpisujesz sobie klasy Premium (jeżeli Twój serwer posiada tylko klasy Premium, zostawiasz sobie tylko tabelę z klasami Premium) codclass_*.amxx /////////////////Klasy Normalne/////////// codclass_*.amxx ;Perki // Lista perków, kolejność na tej liście oznacza kolejność na serwerze pod komendą /perki codperk_*.amxx ;Zalecane na samym dole // Pluginy, które w instrukcji miały wpisane, by były na samym dole *.amxx Naciskasz na nim PPM --> Podgląd/Edycja --> i wypełniasz według własnego uznania. Potem wyłączasz Notepad++, a w WinSCP, gdy spyta, czy przesłać plik naciskasz: "Tak". Teraz pozostało Ci zrestartować serwer (lub zmienić mapę) i sprawdzić interesującą Cię klasę lub perk. Wydaje mi się, że to wszystko. Zakaz kopiowania bez mojej zgody Copyright©Volter
  12. Jeśli nasze rozmowy przyniosą Skutek, dogadamy się. Rozpoczniemy Współpracę, jak sfinalizujemy serwer w Oparciu o Społeczność Forum i ich myśl oraz idee. Ponieważ gówna nie wypuszczę, nie ma Opcji. Następnie ostatnie poprawki względem optymalizacji, dokonamy już na Dedyku, sprawdzając na ile możemy sobie pozwolić, oraz oczywiście przyda się, chłodne oko które będzie czuwać, nad tym aby odrobinkę nie przesadzić dlatego każdy plugin przeglądam testuje zanim będę wiedział, że jest zdatny do użytku Następnie przejdziemy do Reklamy, tą kwestie po rozpoczęciu współpracy Raczej omówimy w zamkniętym [email protected] In4maTor myślę, że to najlepszy sposób. Niemniej jednak, myślę że nasze Community w pierwszych miesiącach dołoży się do Naszego Wspólnego projektu, ponieważ sama Aktywacja dedyka to np 2x jego Kwoty w przybliżeniu, a stawiając to na Dedyku mamy większe możliwości, oraz w dalszej przyszłości może się okazać, że Dedyk ma wystarczająco dużo zasobów by Postawić, coś jeszcze. Ja widzę światło w Tunelu, poparcie Użytkowników na Forum również sugeruje, że Chcą wziąć udział w projekcie. Ale ostateczna Decyzja zależy od Zarządu "Właścicieli" myślę że można również przedyskutować parę spraw np. na TS3 ja nie widzę w tym problemu. Proszę również, aby cały Zarząd podszedł do Tego na chłodno, tak aby w późniejszych Fazach nie dopuścić, do pewnych niedomówień, nieścisłości. Pozdrawiam.
×
×
  • Dodaj nową pozycję...