Play Napisano 1 Września 2014 Udostępnij Napisano 1 Września 2014 Witam, już wam pokazałem jak napisać własną klasę, więc teraz przejdziemy do etapu dodawania umiejętności. a więc zaczynajmy. Nasza klasa CSowicz, bez dodatków : #include <amxmodx> #include <codmod> new const nazwa[] = "CSowicz"; new const opis[] = "Brak"; new const bronie = 1<<CSW_AWP | 1<<CSW_DEAGLE | 2<<CSW_HEGRENADE; new const zdrowie = 43; new const kondycja = 19; new const inteligencja = 6; new const wytrzymalosc = 19; public plugin_init() { cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); } 1. Widocznosc dla klasy Dodajemy bibliotekę czyli : #include <engine> pod #include <codmod> następnie pod new const wytrzymalosc = 19; dodajemy new ma_klase[33]; jeżeli mamy więcej dodatków w klasie które wykorzystują ma_klase[33]; to dodajemy w tej formie new bool: ma_klase[33]; no i na koniec klasy dodajemy : public cod_class_enabled(id) { ma_klase[id] = true; set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0); } public cod_class_disabled(id) { ma_klase[id] = false; set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255); } W public cod_class_enabled(id) określamy ile niewidzialności ma mieć nasza klasa. od 0 do 255 - 0 to całkowita niewidzialność - 255 całkowita widzialność Efekt końcowy : #include <amxmodx>#include <codmod>#include <engine>new const nazwa[] = "CSowicz";new const opis[] = "Nasza klasa jest niewidzialna";new const bronie = 1<<CSW_AWP | 1<<CSW_DEAGLE | 2<<CSW_HEGRENADE;new const zdrowie = 43;new const kondycja = 19;new const inteligencja = 6;new const wytrzymalosc = 19;new ma_klase[33];public plugin_init() { cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); }public cod_class_enabled(id){ ma_klase[id] = true; set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0);} public cod_class_disabled(id){ ma_klase[id] = false; set_rendering(id,kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);} 2. 1/x szansa na natychmiastowe zabicie z broni Dodajemy bibliotekę czyli pod #include <codmod> dodajemy #include <hamsandwich> następnie pod naszą biblioteką dodajemy: #define DMG_BULLET (1<<1) następnie pod new const wytrzymalosc = 19; dodajemy new ma_klase[33]; do public plugin_init() dodajemy RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); no i na koniec naszej klasy dodajemy: public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_klase[idattacker]) return HAM_IGNORED; if(damagebits & DMG_BULLET) { new weapon = get_user_weapon(idattacker); if(weapon == CSW_BRON && random_num(1,X) == 1) cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits); } return HAM_IGNORED; } CSW_BRON - Zmieniamy na nazwe broni z której chcemy mieć szanse "X" na natychmiastowe zabicie. random_num(1,X) - tu określamy jaką szanse na natychmiastowe zabicie z danej broni ma mieć nasza klasa (w miejsce X wstawiamy naszą wartość). Efekt końcowy #include <amxmodx>#include <codmod>#include <hamsandwich> #define DMG_BULLET (1<<1)new const nazwa[] = "CSowicz";new const opis[] = "Nasza klasa ma 1/1 szansa na natychmiastowe zabicie z broni";new const bronie = 1<<CSW_AWP | 1<<CSW_DEAGLE | 2<<CSW_HEGRENADE;new const zdrowie = 43;new const kondycja = 19;new const inteligencja = 6;new const wytrzymalosc = 19;new ma_klase[33];public plugin_init() { cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); 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(damagebits & DMG_BULLET) { new weapon = get_user_weapon(idattacker); if(weapon == CSW_AWP && random_num(1,1) == 1) cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits); } return HAM_IGNORED;} 3. 1/x szansa na odbicie pocisku Dodajemy bibliotekę czyli pod #include <codmod> dodajemy #include <hamsandwich> następnie pod naszą biblioteką dodajemy: #define DMG_BULLET (1<<1) następnie pod new const wytrzymalosc = 19; dodajemy new ma_klase[33]; do public plugin_init() dodajemy RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); No i na sam koniec naszej klasy dodajemy : public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_klase[this] || random_num(1,X) == 1) return HAM_IGNORED; cod_inflict_damage(this, idattacker, damage, 0.0, idinflictor, damagebits); return HAM_SUPERCEDE; } random_num(1,X) - tu określamy ile na ile nasza klasa ma szanse na odbicie pocisku, chyba każdy rozumie (w miejsce X wstawiamy naszą wartość). Efekt Końcowy: #include <amxmodx>#include <codmod>#include <hamsandwich> #define DMG_BULLET (1<<1)new const nazwa[] = "CSowicz";new const opis[] = "Nasza klasa ma 1/5 szansa na odbicie pocisku.";new const bronie = 1<<CSW_AWP | 1<<CSW_DEAGLE | 2<<CSW_HEGRENADE;new const zdrowie = 43;new const kondycja = 19;new const inteligencja = 6;new const wytrzymalosc = 19;new ma_klase[33];public plugin_init() { cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); }public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits){ if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_klase[this] || random_num(1,5) == 1) return HAM_IGNORED; cod_inflict_damage(this, idattacker, damage, 0.0, idinflictor, damagebits); return HAM_SUPERCEDE;} 4. Większa Grawitacja Dodajemy bibliotekę czyli : #include <engine> pod #include <codmod> następnie pod new const wytrzymalosc = 19; dodajemy new ma_klase[33]; następnie do public plugin_init() dodajemy register_event("ResetHUD", "ResetHUD", "abe"); no i na koniec klasy dodajemy : public cod_class_enabled(id) { ma_klase[id] = true; entity_set_float(id, EV_FL_gravity, 200.0/800.0); } public cod_class_disabled(id) { ma_klase[id] = false; entity_set_float(id, EV_FL_gravity, 800.0/800.0); } public ResetHUD(id) { if(ma_klase[id]) entity_set_float(id, EV_FL_gravity, 200.0/800.0); } W public cod_class_enabled(id) i public ResetHUD(id) ustawiamy jaką grawitacje ma mieć nasza klasa. entity_set_float(id, EV_FL_gravity, 200.0/800.0); - 200 to taka grawtiacja naszej klasy 800 - to maksymalna grawitacja jaka obecnie jest wpisana. #include <amxmodx>#include <codmod>#include <engine>new const nazwa[] = "CSowicz";new const opis[] = "Nasza klasa ma 500 grawitacji wiecej";new const bronie = 1<<CSW_AWP | 1<<CSW_DEAGLE | 2<<CSW_HEGRENADE;new const zdrowie = 43;new const kondycja = 19;new const inteligencja = 6;new const wytrzymalosc = 19;new ma_klase[33];public plugin_init() { cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); register_event("ResetHUD", "ResetHUD", "abe"); }public cod_class_enabled(id){ ma_klase[id] = true; entity_set_float(id, EV_FL_gravity, 500.0/800.0);} public cod_class_disabled(id){ ma_klase[id] = false; entity_set_float(id, EV_FL_gravity, 800.0/800.0);}public ResetHUD(id){ if(ma_klase[id]) entity_set_float(id, EV_FL_gravity, 500.0/800.0);} 5. Klasa Premium Dodajemy new ma_klase[33]; pod new const wytrzymalosc = 19; na koniec klasy dodajemy public cod_class_enabled(id) { if(!(get_user_flags(id) & ADMIN_LEVEL_X)) { client_print(id, print_center, "[%s], Nie masz uprawnien, aby uzywac tej klasy.", nazwa); return COD_STOP; } ma_klase[id] = true; return PLUGIN_CONTINUE } public cod_class_disabled(id) { ma_klase[id] = false; } ADMIN_LEVEL_X)) - tu ustawiamy flagę na jaką ma być nasza klasa Efekt końcowy #include <amxmodx>#include <codmod>new const nazwa[] = "CSowicz";new const opis[] = "Nasza klasa Premium";new const bronie = 1<<CSW_AWP | 1<<CSW_DEAGLE | 2<<CSW_HEGRENADE;new const zdrowie = 43;new const kondycja = 19;new const inteligencja = 6;new const wytrzymalosc = 19;new ma_klase[33];public plugin_init() { cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); }public cod_class_enabled(id){ if(!(get_user_flags(id) & ADMIN_LEVEL_H)) { client_print(id, print_center, "[%s], Nie masz uprawnien, aby uzywac tej klasy.", nazwa); return COD_STOP; } ma_klase[id] = true; return PLUGIN_CONTINUE} public cod_class_disabled(id){ ma_klase[id] = false;} 6. Dodatkowe skoki dla klasy Do naszej biblioteki dodajemy #include <fakemeta> pod #include <codmod> pod new const wytrzymalosc = 19; dodajemy new ma_klase[33]; new skoki[33]; do public plugin_init() dodajemy register_forward(FM_CmdStart, "fwCmdStart_MultiJump"); no i na koniec klasy dodajemy public fwCmdStart_MultiJump(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] = X; return FMRES_IGNORED; } skoki[id] = X; - tu ustawiamy ile nasza klasa ma mieć skoków (1skok jest już podsawowy). Efekt końcowy #include <amxmodx>#include <codmod>#include <fakemeta>new const nazwa[] = "CSowicz";new const opis[] = "Nasza klasa Posiada 5skokow";new const bronie = 1<<CSW_AWP | 1<<CSW_DEAGLE | 2<<CSW_HEGRENADE;new const zdrowie = 43;new const kondycja = 19;new const inteligencja = 6;new const wytrzymalosc = 19;new ma_klase[33];new skoki[33];public plugin_init() { cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); register_forward(FM_CmdStart, "fwCmdStart_MultiJump");}public fwCmdStart_MultiJump(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] = 5; return FMRES_IGNORED;} 7. Nie tracimy hp po upadku pod #include <codmod> dodajemy #include <hamsandwich> pod new const wytrzymalosc = 19; dodajemy new ma_klase[33]; do public plugin_init() dodajemy RegisterHam(Ham_TakeDamage, "player","TakeDamage"); no i na koniec klasy dodajemy public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(this)) return HAM_IGNORED; if(!ma_klase[this]) return HAM_IGNORED; if(damagebits & (1<<5)) SetHamParamFloat(4, 0.0); return HAM_IGNORED; } Efekt końcowy #include <amxmodx>#include <codmod>#include <hamsandwich> new const nazwa[] = "CSowicz";new const opis[] = "Nasza klasa nie traci hp po upadku";new const bronie = 1<<CSW_AWP | 1<<CSW_DEAGLE | 2<<CSW_HEGRENADE;new const zdrowie = 43;new const kondycja = 19;new const inteligencja = 6;new const wytrzymalosc = 19;new ma_klase[33];public plugin_init() { cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); RegisterHam(Ham_TakeDamage, "player","TakeDamage");}public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits){ if(!is_user_connected(this)) return HAM_IGNORED; if(!ma_klase[this]) return HAM_IGNORED; if(damagebits & (1<<5)) SetHamParamFloat(4, 0.0); return HAM_IGNORED;} 8. 1/X na zrespienie się u wroga Do biblioteki dodajemy #include <hamsandwich> #include <cstrike> pod #include <codmod> pod new const wytrzymalosc = 19; dodajemy new ma_klase[33]; do public plugin_init() dodajemy RegisterHam(Ham_Spawn, "player", "Spawn", 1); na koniec dodajemy public Spawn(id) { if(!is_user_alive(id)) return; if(!ma_klase[id]) return; if(random_num(1,X) == 1) { 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); } } if(random_num(1,X) - tu określamy szanse na zrespienie sie na respie wroga w miejsce (X) wpisujemy wartosc. Efekt końcowy #include <amxmodx>#include <codmod>#include <hamsandwich>#include <cstrike> new const nazwa[] = "CSowicz";new const opis[] = "Nasza klasa ma 1/3 szanse na zrespienie sie na respie wroga";new const bronie = 1<<CSW_AWP | 1<<CSW_DEAGLE | 2<<CSW_HEGRENADE;new const zdrowie = 43;new const kondycja = 19;new const inteligencja = 6;new const wytrzymalosc = 19;new ma_klase[33];public plugin_init() { cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); RegisterHam(Ham_Spawn, "player", "Spawn", 1);}public Spawn(id){ if(!is_user_alive(id)) return; if(!ma_klase[id]) return; if(random_num(1,3) == 1) { 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); }} 9. Ciche kroki Wystarczy dodać na koniec, czystej naszej klasy public cod_class_enabled(id) { set_user_footsteps(id, 1); } public cod_class_disabled(id) { set_user_footsteps(id, 0); } 10. Ubranie Wroga Pod #include <codmod> dodajemy #include <cstrike> po naszych bibliotekach dodajemy new bool: ma_klase[33]; new CT_Skins[4][] = {"sas","gsg9","urban","gign"}; new Terro_Skins[4][] = {"arctic","leet","guerilla","terror"}; na koniec naszej klasy dodajemy public cod_class_enabled(id){ ZmienUbranie(id, 0); ma_klase[id] = true; } public cod_class_disabled(id){ ZmienUbranie(id, 1); ma_klase[id] = false; } 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; } Efekt końcowy #include <amxmodx>#include <codmod>#include <cstrike>new bool: ma_klase[33];new CT_Skins[4][] = {"sas","gsg9","urban","gign"};new Terro_Skins[4][] = {"arctic","leet","guerilla","terror"}; new const nazwa[] = "CSowicz";new const opis[] = "Nasza klasa ma Ubranie Wroga";new const bronie = 1<<CSW_AWP | 1<<CSW_DEAGLE | 2<<CSW_HEGRENADE;new const zdrowie = 43;new const kondycja = 19;new const inteligencja = 6;new const wytrzymalosc = 19;public plugin_init() { cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);}public cod_class_enabled(id){ ZmienUbranie(id, 0); ma_klase[id] = true;}public cod_class_disabled(id){ ZmienUbranie(id, 1); ma_klase[id] = false;}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;} 11. Widzisz Niewidzialnych Do naszej biblioteki czyli pod #include <codmod> dodajemy #include <fakemeta> pod new const wytrzymalosc = 19; dodajemy new ma_klase[33]; do public plugin_init() dodajemy register_forward(FM_AddToFullPack, "FwdAddToFullPack", 1) na koniec naszego sma dodajemy 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); } Efekt końcowy #include <amxmodx>#include <codmod>#include <fakemeta>new const nazwa[] = "CSowicz";new const opis[] = "Nasza klasa ma Widzisz Niewidzialnych";new const bronie = 1<<CSW_AWP | 1<<CSW_DEAGLE | 2<<CSW_HEGRENADE;new const zdrowie = 43;new const kondycja = 19;new const inteligencja = 6;new const wytrzymalosc = 19;new ma_klase[33];public plugin_init() { cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); 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);} 12. No Recoil (Brak Rozrzutu broni) Do naszej biblioteki czyli pod #include <codmod> dodajemy #include <fakemeta> pod new const wytrzymalosc = 19; dodajemy new ma_klase[33]; do public plugin_init() dodajemy register_forward(FM_PlayerPreThink, "PreThink"); register_forward(FM_UpdateClientData, "UpdateClientData", 1) na koniec dodajemy public PreThink(id) { if(ma_klase[id]) set_pev(id, pev_punchangle, {0.0,0.0,0.0}) } public UpdateClientData(id, sw, cd_handle) { if(ma_klase[id]) set_cd(cd_handle, CD_PunchAngle, {0.0,0.0,0.0}) } Efekt końcowy #include <amxmodx>#include <codmod>#include <fakemeta>new const nazwa[] = "CSowicz";new const opis[] = "Nasza klasa ma No-Recoil (Brak Rozrzutu Broni)";new const bronie = 1<<CSW_AWP | 1<<CSW_DEAGLE | 2<<CSW_HEGRENADE;new const zdrowie = 43;new const kondycja = 19;new const inteligencja = 6;new const wytrzymalosc = 19;new ma_klase[33];public plugin_init() { cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); register_forward(FM_PlayerPreThink, "PreThink"); register_forward(FM_UpdateClientData, "UpdateClientData", 1)}public PreThink(id){ if(ma_klase[id]) set_pev(id, pev_punchangle, {0.0,0.0,0.0})} public UpdateClientData(id, sw, cd_handle){ if(ma_klase[id]) set_cd(cd_handle, CD_PunchAngle, {0.0,0.0,0.0}) } 13. Odporny na HeadShooty Do naszej biblioteki czyli pod #include <codmod> dodajemy #include <fakemeta> pod new const wytrzymalosc = 19; dodajemy new ma_klase[33]; do public plugin_init() dodajemy register_forward(FM_TraceLine, "TraceLine"); na koniec dodajemy public TraceLine(Float:start[3], Float:end[3], conditions, id, trace) { if(get_tr2(trace, TR_iHitgroup) != HIT_HEAD) return FMRES_IGNORED; new iHit = get_tr2(trace, TR_pHit); if(!is_user_connected(iHit)) return FMRES_IGNORED; if(!ma_klase[iHit]) return FMRES_IGNORED; set_tr2(trace, TR_iHitgroup, 8); return FMRES_IGNORED; } Efekt końcowy #include <amxmodx>#include <codmod>#include <fakemeta>new const nazwa[] = "CSowicz";new const opis[] = "Nasza klasa ma Odpornosc na HeadShooty";new const bronie = 1<<CSW_AWP | 1<<CSW_DEAGLE | 2<<CSW_HEGRENADE;new const zdrowie = 43;new const kondycja = 19;new const inteligencja = 6;new const wytrzymalosc = 19;new ma_klase[33];public plugin_init() { cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); register_forward(FM_TraceLine, "TraceLine");}public TraceLine(Float:start[3], Float:end[3], conditions, id, trace){ if(get_tr2(trace, TR_iHitgroup) != HIT_HEAD) return FMRES_IGNORED; new iHit = get_tr2(trace, TR_pHit); if(!is_user_connected(iHit)) return FMRES_IGNORED; if(!ma_klase[iHit]) return FMRES_IGNORED; set_tr2(trace, TR_iHitgroup, 8); return FMRES_IGNORED;} 4 Jeżeli jesteś w czymś dobry, nigdy nie rób tego za darmo! Odnośnik do komentarza https://csowicze.pl/topic/1805-zamkni%C4%99te-dodatki-do-klas/ Udostępnij na innych stronach Więcej opcji udostępniania...
Nati. ;3 Napisano 22 Września 2014 Udostępnij Napisano 22 Września 2014 Plusik :) Odnośnik do komentarza https://csowicze.pl/topic/1805-zamkni%C4%99te-dodatki-do-klas/#findComment-13609 Udostępnij na innych stronach Więcej opcji udostępniania...
KSP. Napisano 23 Września 2014 Udostępnij Napisano 23 Września 2014 Dobre + GG : 51556742 Odnośnik do komentarza https://csowicze.pl/topic/1805-zamkni%C4%99te-dodatki-do-klas/#findComment-13692 Udostępnij na innych stronach Więcej opcji udostępniania...
` izcoN (◣_◢) Napisano 3 Października 2014 Udostępnij Napisano 3 Października 2014 Wiadomość wygenerowana automatycznie Temat został zamknięty przez moderatora. Jeżeli się z tym nie zgadzasz raportuj ten post a moderator lub administrator rozpatrzy go ponownie. Z pozdrowieniami. Administracja CSowicze.pl Kontaktując się ze mną: - Przedstaw się. - Przejdź do sedna sprawy. - Zawrzyj istotne informacje. - Czekaj cierpliwie na odpowiedź. TWORZENIE FOR SPOŁECZNOŚCIOWYCH | ZARZĄDZANIE STRONAMI INTERNETOWYMI WSPARCIE TECHNICZNE SERWERÓW HLDS | MODERNIZACJA, OPTYMALIZACJA, ZABEZPIECZENIA Odnośnik do komentarza https://csowicze.pl/topic/1805-zamkni%C4%99te-dodatki-do-klas/#findComment-15523 Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi