Otóż chcę zrobić, by gracz, który jest blisko wieżyczki mógł "podnieść ją" naciskając RAZ klawisz "E". A mógł ją upuśćić ( lecz nie w miejscu, gdzie ono jest zablokowane ) naciskając DRUGI RAZ klawisz "E".
Mam taki kod:
new iTime[33]; public client_PreThink(id) { if(!is_user_alive(id) || is_user_hltv(id)) return PLUGIN_CONTINUE static entlist[3] if(find_sphere_class(id, "turret", 10.0, entlist, 2)) { if(is_turret(entlist[0]) && get_gametime() > ThinkTime[id]+0.5 && (get_sentry_owner_by_ent_id(entlist[0]) == id) && !gMenuTurretsInMenu[id] && !task_exists(entlist[0])) { static Float:Origin[3], fOrigin[3] pev(entlist[0], pev_origin, Origin) FVecIVec(Origin, fOrigin) msg_circle(id, fOrigin, gSpriteLaserBeam, {255, 255, 0}, gTurretsRange[id][get_sentry_id_by_ent(id, entlist[0])]-220) ThinkTime[id] = get_gametime() } if(get_gametime() > ThinkInfoTime[id]+2.0) { static nick[33], szTemp[64], szTurret[64], id2 id2 = get_sentry_owner_by_ent_id(entlist[0]) get_user_name(id2, nick, 32) formatex(szTemp, 63, "Wiezyczka gracza: %s", nick) if(gTurretsType[id2][get_sentry_id_by_ent(id2, entlist[0])]) { formatex(szTurret, 63, "^nTyp : %s^nAmunicja : %d", gTurretName[gTurretsType[id2][get_sentry_id_by_ent(id2, entlist[0])]], gTurretsAmmo[id2][get_sentry_id_by_ent(id2, entlist[0])]) add(szTemp, 63, szTurret) } ThinkInfoTime[id] = get_gametime() set_hudmessage(0, 255, 0, 0.31, 0.79, 1, 6.0, 2.0, _, _, 2) ShowSyncHudMsg(id, gSync4, szTemp) } } if(g_iOwnedEnt[id] && IsMovingEnt[id]) { static Float:Origin[3], Float:Origin2[3], GOrigin[3] get_user_origin(id, GOrigin, 3) IVecFVec(GOrigin, Origin)//origin IVecFVec(GOrigin, Origin2)//turn get_origin_from_dist_player(id, 45.0, Origin) Origin[2]-=36.0 set_pev(g_iOwnedEnt[id], pev_origin, Origin) sentry_turntotarget2(g_iOwnedEnt[id], Origin, Origin2) if(is_turret_stuck(g_iOwnedEnt[id])) { client_print(id, print_center, "Nie mozesz tutaj postawic tej wiezyczki!") CanDropTurret[id] = false } else CanDropTurret[id] = true; entity_set_float(g_iOwnedEnt[id], EV_FL_nextthink, 0.0) } return PLUGIN_CONTINUE } public fw_CmdStart( id, uc_handle, randseed ) { if (!is_user_alive(id)) return FMRES_IGNORED if((pev(id, pev_button) & IN_USE) && !(pev(id, pev_oldbuttons) & IN_USE)) { LastCanDropTurret[id] = !LastCanDropTurret[id] //LastCanDropTurret[id] = LastCanDropTurret[id]?!LastCanDropTurret[id]:LastCanDropTurret[id] if(LastCanDropTurret[id]) { iTime[id] = floatround(get_gametime()); cmdGrabEnt(id) } if(!LastCanDropTurret[id] && CanDropTurret[id] && ( iTime[id]+1 == floatround(get_gametime()) )) { cmdStopEnt(id) } } //else if(oldbutton & IN_USE && !(button & IN_USE) && CanDropTurret[id]) // cmdStopEnt(id return FMRES_IGNORED; }
public cmdGrabEnt(id) { client_cmd(id, "+use") new entlist[3] new ent if(find_sphere_class(id, "turret", 17.5, entlist, 2)) { ent = entlist[0] } else return PLUGIN_HANDLED if (!is_valid_ent(ent) || is_user_alive(ent)) return PLUGIN_HANDLED; static szClass[10] entity_get_string(ent, EV_SZ_classname, szClass, 9); if (!equal(szClass, "turret")) return PLUGIN_HANDLED; static Float:fOrigin[3], iAiming[3], Float:fAiming[3] get_user_origin(id, iAiming, 3); IVecFVec(iAiming, fAiming); entity_get_vector(ent, EV_VEC_origin, fOrigin); g_fOffset1[id] = fOrigin[0] - fAiming[0]; g_fOffset2[id] = fOrigin[1] - fAiming[1]; g_fOffset3[id] = fOrigin[2] - fAiming[2]; set_pev(ent,pev_rendermode,kRenderTransColor) set_pev(ent,pev_rendercolor, {255, 0, 0}) set_pev(ent,pev_renderamt, 100.0) IsMovingEnt[id] = true; g_iOwnedEnt[id] = ent client_cmd(id, "-use") return PLUGIN_HANDLED } public cmdStopEnt(id) { //client_cmd(id, "-use") if (!g_iOwnedEnt[id]) return PLUGIN_HANDLED; new ent = g_iOwnedEnt[id] set_pev(ent,pev_rendermode, kRenderNormal) set_pev(ent,pev_rendercolor, {0, 0, 0}) set_pev(ent,pev_renderamt, 255.0) g_iOwnedEnt[id] = 0; IsMovingEnt[id] = false drop_to_floor(ent) entity_set_float(ent, EV_FL_nextthink, get_gametime()+0.1) return PLUGIN_CONTINUE }
O to o co mi chodzi
1. Podchodze do wieżyczki - naciskam klawisz "E" 2. Podnoszę wieżyczke, puszczam klawisz "E" ( client_cmd(id, "+use") ) 3. Dalej trzymam tą wieżyczkę 4. Idę w inne miejsce 5. To miejsce jest zablkowane ( is_turret_stuck ) 6. Nie mogę postawić tam wieżyczki ( Naciskając drugi raz klawisz "E" ) 7. Idę w inne miejsce 8. To miejsce jest dobre i mogę tam postawić wieżyczkę 9. Postawiam wieżyczkę 10. I tak w kółko
A ten kod co dałem działa tak:
1. Podchodze do wieżyczki - naciskam klawisz "E" 2. Podnoszę wieżyczke, puszczam klawisz "E" ( client_cmd(id, "+use") ) 3. Dalej trzymam tą wieżyczkę 4. Idę w inne miejsce 5. To miejsce jest zablkowane ( is_turret_stuck ) 6. Nie mogę postawić tam wieżyczki ( Naciskając drugi raz klawisz "E" ) 7. Idę w inne miejsce 8. To miejsce jest dobre i NIE mogę tam postawić wieżyczkę 9. W ogóle nie mogę postawić nigdzie wieżyczki. 10. I tak w kółko
Gdy dam restart, żeby podnieść wieżyczkę, musze wpisać komendę do konsoli: "-use"
Czemu tak się dzieję ? Proszę o pomoc.