Orientuje się ktoś z was czy jest może funkcja rzucania granatem dymnym lub coś co aktywuje takiego granata?
Chodzi o to, że mam wyrzutnie granatów lecz tam jest stworzony stock który tworzy wybuch, jakieś efekty dodatkowe. Natomiast ja szukam czegoś co pozwoli mi z tego granatnika wystrzelić smoke i ten smoke wybuchnie tak jakbym faktycznie nim rzucił
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
DEADP00L
Rejestracja: 20.10.2012Aktualnie: Nieaktywny
Poza forum Ostatnio: 21.04.2024 00:31
O mnie
MAM DO SPRZEDANIA UNIKALNY MOD
CS:GO MOD pod serwery CS 1.6
!!!
Statystyki
- Grupa: Użytkownik
- Całość postów: 169
- Odwiedzin: 7 136
- Tytuł: Profesjonalista
- Wiek: 30 lat
- Urodziny: Luty 20, 1994
-
Imię
Bart
-
Płeć
Mężczyzna
-
Lokalizacja
United Kingdom
-
Zainteresowania
Wordpress & WooCommerce, Photography
Kontakt
- Steam 76561198128220930
Narzędzia użytkownika
Moje tematy
Funkcja rzucania granatem dymnym
18.02.2024 23:32
[ROZWIĄZANE] Visual Damage (sprites)
15.12.2023 20:42
Mam taki problem z poniższym pluginem, że sprites z zadawanymi obrażeniami jest widoczny dla wszystkich.
I teraz moje pytanie brzmi, jak przerobić go tak aby był widoczny tylko i wyłącznie dla atakującego?
public fwdAddToFullPack_Post( es, e, ent, host, host_flags, player, p_set ) { if (!is_nullent(ent) && get_entvar(ent,var_owner) == host && host != ent) { if(iMeters > 9) set_es( es , ES_Scale , 5.37/19) else if(iMeters > 4 && iMeters < 9) set_es( es , ES_Scale , 3.20/22) else set_es( es , ES_Scale , iMeters/25); } return FMRES_IGNORED; } public CBasePlayer_TakeDamage(const victim, inflictor, const attacker, Float:damage) { if(victim == attacker || !rg_is_player_can_takedamage(victim, attacker) || !is_user_connected(attacker)) return HC_CONTINUE; new Float:kOrigin[ 3 ], Float:vOrigin[ 3 ] pev( attacker, pev_origin, kOrigin ) pev( victim, pev_origin, vOrigin ) iDist = get_distance_f( kOrigin, vOrigin ) iMeters = iDist * 0.0254 new MODEL_ent = rg_create_entity("env_sprite") if(!is_nullent(MODEL_ent)){ new Float:Color[3] , Float:Velocity[3] , Float:Origin[3] , Float:height = 25 + ( random_num(0,3) * 7.0 ) Velocity[2] = 20.0 Velocity[1] = random_float(-4.0,4.0) Velocity[0] = random_float(-4.0,4.0) Color[0] = 255.0 Color[1] = floatround(damage) > 100 ? 0.0 : ((255.0 - ( floatround(damage) * 4.55 )) * ( 1.0 - (floatround(damage)/100.0) ) ) Color[2] = Color[1] get_entvar( victim , var_origin , Origin ) if(iMeters > 7) Origin[2] += height * 1.05 else Origin[2] += height set_entvar( MODEL_ent , var_owner , attacker) set_entvar( MODEL_ent , var_model , Numbers_Model) set_entvar( MODEL_ent , var_modelindex , Numbers_Modelindex) set_entvar( MODEL_ent , var_rendermode , kRenderTransAdd) set_entvar( MODEL_ent , var_movetype,MOVETYPE_NOCLIP) set_entvar( MODEL_ent , var_renderamt , 300.0) set_entvar( MODEL_ent , var_scale , 0.0) set_entvar( MODEL_ent , var_rendercolor,Color) set_entvar( MODEL_ent , var_velocity , Velocity ) set_entvar( MODEL_ent , var_origin , Origin ) set_entvar( MODEL_ent , var_frame , damage ) DecreaseSpeed(MODEL_ent) SetThink(MODEL_ent, "ReducingTransparency") ReducingTransparency( MODEL_ent ) } return HC_CONTINUE; } public DecreaseSpeed(ent){ if ( !is_nullent(ent)){ new Float:Velocity[3] get_entvar( ent , var_velocity ,Velocity ) Velocity[2] -= 1.0 set_entvar( ent , var_velocity ,Velocity ) set_task(1.0,"DecreaseSpeed",ent) } } public ReducingTransparency(ent){ static Float:Renderamt get_entvar( ent , var_renderamt ,Renderamt ) Renderamt -= 10.0 if ( Renderamt < 10 ) set_entvar( ent , var_flags , FL_KILLME ) , remove_task(ent) else { set_entvar( ent , var_renderamt , Renderamt ) set_entvar(ent, var_nextthink, get_gametime( ) + 0.2) } }
[ROZWIĄZANE] Problem z odczytywaniem adresu IP gracza z bazy danych (SQL)
22.10.2023 19:16
Witam!
Tak wygląda funkcja zapisu danych:
public sql_save(id) { if (gTablesLoaded[id] == 1) { if ( gIntermission ) { sql_save_nonthreaded(id); return; } new tempSaveKeyID[63], tempSaveKeyIP[63]; copy(tempSaveKeyID, charsmax(tempSaveKeyID), gSaveKeyID[id]); replace_all(tempSaveKeyID, charsmax(tempSaveKeyID), "'", "\'" ); copy(tempSaveKeyIP, charsmax(tempSaveKeyIP), gSaveKeyIP[id]); replace_all(tempSaveKeyIP, charsmax(tempSaveKeyIP), "'", "\'" ); formatex(g_Cache, charsmax(g_Cache), "UPDATE zp_user_weapons SET player_selection=%i, weapon_first=%i, weapon_second=%i, player_ip=^"%s^" WHERE player_id=^"%s^"", typ_wybierania[id] == 1 ? 0 : typ_wybierania[id], typ_wybierania[id] == 0 ? -1 : first_selection[id], typ_wybierania[id] == 0 ? -1 : second_selection[id], tempSaveKeyIP, tempSaveKeyID); SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_Cache); } }
Wszystko dziala poprawanie:
I teraz kiedy probuje odczytac adres IP danego gracza i porownac go z adresem podczas laczenia sie z serwerem to juz mam problemy z tym.
Funkcja sprawdzania/odczytu danych z bazy SQL:
public SelectHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize) { if (FailState) { if (FailState == TQUERY_CONNECT_FAILED) { log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error); } else if (FailState == TQUERY_QUERY_FAILED) { log_amx("Load Query failed. [%d] %s", Errcode, Error); } return; } new id = Data[0]; if (!SQL_NumResults(Query)) { typ_wybierania[id] = 0; first_selection[id] = 0; second_selection[id] = 0; new tempSaveKeyID[63]; copy(tempSaveKeyID, charsmax(tempSaveKeyID), gSaveKeyID[id]); replace_all(tempSaveKeyID, charsmax(tempSaveKeyID), "'", "\'" ); formatex(g_Cache, charsmax(g_Cache), "INSERT INTO zp_user_weapons VALUES('%s', '0', '0', '0', '0')", tempSaveKeyID); SQL_ThreadQuery(g_SqlTuple, "QueryHandle", g_Cache); } else { new tempSaveKeyIP[63]; copy(tempSaveKeyIP, charsmax(tempSaveKeyIP), gSaveKeyIP[id]); replace_all(tempSaveKeyIP, charsmax(tempSaveKeyIP), "'", "\'" ); typ_wybierania[id] = SQL_ReadResult(Query, 0); first_selection[id] = SQL_ReadResult(Query, 1); second_selection[id] = SQL_ReadResult(Query, 2); } gTablesLoaded[id]++; }
I w moim przypadku adres IP będzie: SQL_ReadResult(Query, 3);
Kiedy tworze zmienną adres_ip[33]
i próbuję ustawić to w ten sposób:
adres_ip[id] = SQL_ReadResult(Query, 3);
A następnie chcę odczytać ten adres IP robiąc to używajac kodu ponizej:
public PokazIP(id) { new tempSaveKeyIP[63]//, tempSaveKeyOldIP[63] copy(tempSaveKeyIP, charsmax(tempSaveKeyIP), gSaveKeyIP[id]); replace_all(tempSaveKeyIP, charsmax(tempSaveKeyIP), "'", "\'" ); //copy(tempSaveKeyOldIP, charsmax(tempSaveKeyOldIP), gSavedKeyIP[id][64]); //replace_all(tempSaveKeyOldIP, charsmax(tempSaveKeyOldIP), "'", "\'" ); client_print(id, print_chat, "Twoje IP: %s, a w bazie widnieje jako %s", tempSaveKeyIP, dane) }
To wyswietla mi tylko info:
"widnieje jako 185" reszty adresu IP nie widac, tylko pierwsze trzy cyfry to kropki.
Jakie pomysly, co zle robie?
TakeDamage_Pre - sprawdzenie funkcji
28.05.2023 17:23
Witam,
Chciałbym zapoznać się z waszymi opiniami czy według was jest to stabilna forma zmiany obrażeń poszczególnej broni:
#define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers) new g_iMaxPlayers; new const Float:hit_area[][] = { { 1.0, 1.0, 1.0 }, // HIT_GENERIC { 50.0, 10.0, 30.0 }, // HIT_HEAD { 25.0, 8.0, 15.0 }, // HIT_CHEST { 20.25, 6.25, 12.25 }, // HIT_STOMACH { 10.0, 4.0, 8.0 }, // HIT_LEFTARM { 10.0, 4.0, 8.0 }, // HIT_RIGHTARM { 8.75, 2.75, 5.75 }, // HIT_LEFTLEG { 8.75, 2.75, 5.75 }, // HIT_RIGHTLEG { 0.0, 0.0, 0.0 } // HIT_SHIELD } public plugin_init() { RegisterHam(Ham_TakeDamage, "player", "Ham_CBasePlayer_TakeDamage_Pre", 0); g_iMaxPlayers = get_maxplayers(); } public Ham_CBasePlayer_TakeDamage_Pre(id, iInflictor, iAttacker, Float:flDamage, bitsDamageType) { if(id != iAttacker && is_user_connected(iAttacker) && IsPlayer(iAttacker)) { const XTRA_OFS_PLAYER = 5; const m_LastHitGroup = 75; const m_iTeam = 114; new weapon = get_user_weapon(iAttacker), hitbox = get_pdata_int(id, m_LastHitGroup, XTRA_OFS_PLAYER); switch(weapon) { case CSW_KNIFE: if(bitsDamageType & DMG_BULLET && get_pdata_int(id, m_iTeam, XTRA_OFS_PLAYER) != get_pdata_int(iAttacker, m_iTeam, XTRA_OFS_PLAYER)) SetHamParamFloat(4, hit_area[hitbox][0]) case CSW_FIVESEVEN: if(bitsDamageType & DMG_BULLET && get_pdata_int(id, m_iTeam, XTRA_OFS_PLAYER) != get_pdata_int(iAttacker, m_iTeam, XTRA_OFS_PLAYER)) SetHamParamFloat(4, hit_area[hitbox][1]) case CSW_M4A1: if(bitsDamageType & DMG_BULLET && get_pdata_int(id, m_iTeam, XTRA_OFS_PLAYER) != get_pdata_int(iAttacker, m_iTeam, XTRA_OFS_PLAYER)) SetHamParamFloat(4, hit_area[hitbox][2]) } return HAM_OVERRIDE } return HAM_IGNORED }
Dodam, że łącznie będzie tam 24 case'ów z każdą bronią
Czy według was jest to dobrze zoptymalizowane?
Z góry dziękuję za wszelkie sugestie!
- AMXX.pl: Support AMX Mod X i SourceMod
- → Przeglądanie profilu: Tematy: DEADP00L
- Regulamin