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








Volter

 Właściciel Serwera
  • Liczba zawartości

    32
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    1
  • Czas Online

    2d 4h 22m 5s

Ostatnia wygrana Volter w dniu 25 Lipca

Użytkownicy przyznają Volter punkty reputacji!

Reputacja

36 Życzliwy

1 obserwujący

O Volter

Informacje

  • Płeć
    Mężczyzna

Ostatnie wizyty

153 wyświetleń profilu
  1. Volter

    odrzucone Szymeek - Grafik

    Tak szczerze, młody Grafiku to wygląda Tragicznie w moje Opinii.
  2. Co mamy przez to Rozumieć? UB Do zamknięcia.
  3. @ lesio373 DM Zapraszam do Rozpisania Demka
  4. Zagłosuj na DM  + COD Jedno kliknięcie, dzieli nas od wysokiej Pozycji. Liczba głosów: 2
  5. Volter

    Podanko

    Tak wiem, Rekrutacja wytrzymana ale ośmielę się napisać, z racji tego że cóż ktoś forum musi posprzątać Imię: Damian Wiek: 24 Ile czasu dziennie spędzasz na forum?: 5 -6 h? Przeczytałeś/aś i akceptujesz regulamin forum oraz chatbox'a ?: Oj tam Umiejętność moderowania forum na silniku IPS w stopniu od 1 do 10: 10 może 11 wzależności czy musiałbym coś napisać Znajomość ortografii i poprawnej pisowni w stopniu od 1 do 10: 7 Doświadczenie jako moderator: Troszku mam Dlaczego akurat ty masz zostać moderatorem: Ktoś musi, zacząć sprzątać to Forum, doprowadzić do stanu użytkowania, trzeba sprzątać posty które nic nie wnoszą do wątku, a tylko zaśmiecają, to jest ten Dzień aby zmienić oblicze Fragareny.pl niech ktoś z czasów dawnych, zostanie Moderatorem, to uwierzcie Warny będziecie odrabiać, aż się nauczycie. Kiedyś człowiek przestrzegał zasad, oraz starał się wnosić coś, gdy pisał temat ew. Post. A teraz mirsz marsz, trzeba to ogarnąć bo nie mogę na to patrzeć. Coś o sobie (dłuższa wypowiedź): Damian, były Technik nieistniejącej już Sieci "Skillownia.com" w latach 2014-1016?? później Właściciel, Webmaster, Technik, Moderatot. Sieci "cs-deathrun.pl" Kontakt:
  6. 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
  7. 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.
  8. Głównym Celem jest stworzenie Serwera, który zostanie godnie zapamiętany a do tego jest Potrzebne wasze (nasze) Community, tak aby również wam, nam Grało się przyjemnie. Nie tworzę Serwera dla siebie, ale dla całego Community Forum, wraz ze wszystkimi którzy będzie mieli ochotę zawitać, więc uwagi i obiektywna opinia jest wręcz wskazana. Głównym założeniem serwera nie jest Zarobek, bo ujmijmy to szczerze Zarabianie na 1.6 w 2k20. Celem jest powrót do przeszłości, mały krok wstecz, oraz ukłon dla Starych graczy, którzy Szukają, własnie serwerów gdzie dawno, dawno Temu spędzali długie chwilę, a teraz jest to zasypywane np takim DR + COD MOD, co jest dla mnie co najmniej Śmiesznę. @ BaZyLiszEk Szanuję, za odpowiedź, oraz za Opinię :)
  9. Imię: Damian Hosting serwera: Aktualnie VPS, później Dedyk. Mod serwera: Deathrun Classic Ilość właścicieli serwera: 1 Ilość opiekunów serwera: 0 Ilość slotów: 32 Wiek właścicieli serwera + opiekunów: 24 Link do GameTracker'a: Aktualnie Brak 185.242.133.187:27015 IP serwera TESTOWEGO Od kiedy serwer posiadasz: Testowy od Kliku dni, gdzie sprawdzam dany Plugin czy Ma sens Aktywna reklama: Będzie Kontakt: PW Dlaczego wybrałeś naszą sieć: Bo nie stoi na proserwer.pl oraz domena jest podpięta pod cloudflare Przeczytałeś/aś i akceptujesz regulamin forum oraz chatbox'a ?: Myśle, że Tak Tak w skrócie - Planuje projekt Serwera Deathrun Classic'a. Serwer jest w fazie projektu i finalizacji, oraz przeniesienia na Dedyka(aktualnie stoi na VPS) ponieważ chcę, aby przy liczbie pluginów w finalnej wersji oraz z pingboostem 3 serwer nominalnie w ~32 obsadzie generował min. 1000FPS dla przyjemnej i satysfakcjonującej Rozgrywki( skakania :) ) Aby projekt miał Sens potrzebuje wsparcia od waszego Community, jakoś również Finansowo. Przysłowie mówi kto nie Ryzykuje nie piję Szampana. Jeśli zaś Szanowna Administracja, nie jest Zainteresowana przyjmę to równie mile, jak samą Akceptację Pozdrawiam.
×
×
  • Dodaj nową pozycję...