IsEntVisible
grankee
23.11.2015
Sprawdza czy Ent jest widoczny dla gracza. Tak na prawdę jeśli ustawimy ostatni paramert na false to zamiast clienta mozna podac dowolne entity.
Uwaga! funkcja nie sprawdza czy byty istnieją oraz czy client to gracz. W przypadku nieprawidłowego użycia spodziewajcie sie errorów.
/** * Check if there is something visible between the player and the entity. * * @param client client entity index * @param entity entity index * @param Float:maxdistance max distance to check if specified * otherwise check in infinited distance * @param bool:FromEyePosition determine if start position will be from eyes or AbsOrigin * * @return true if visible, false if not */ stock bool:IsEntVisible(client,entity,const Float:maxdistance=0.0,const bool:FromEyePosition=true) { if((Entity_GetDistance(client,entity)>maxdistance)&&(maxdistance>0.0)) return false //if maxdistance used (!0.0) and distance longer return 0 new Float:vClientOrigin[3],Float:vEntOrigin[3] FromEyePosition ? GetClientEyePosition(client,vClientOrigin) : Entity_GetAbsOrigin(client,vClientOrigin) Entity_GetAbsOrigin(entity,vEntOrigin) //Check for colliding entities new Handle:TrHandle=TR_TraceRayFilterEx(vClientOrigin, vEntOrigin, MASK_VISIBLE_AND_NPCS,RayType_EndPoint, TraceRayDontHitSelf, client) new TRIndex if (TR_DidHit(TrHandle)) { TRIndex = TR_GetEntityIndex(TrHandle) } return bool:(TRIndex==entity) } public bool:TraceRayDontHitSelf(entity, mask, any:data) { if(entity == data) // Check if the TraceRay hit the itself. { return false // Don't let the entity be hit } return true // It didn't hit itself }
Użytkownik grankee edytował ten post 23.11.2015 22:59
BartekB
23.11.2015
Czyli teoretycznie mogę zrobić funkcję coś w rodzaju if(IsEntVisible) to ustaw go jako niewidocznego, przy użyciu tej funkcji? Dobrze zrozumiałem jej działanie?
grankee
23.11.2015
if(IsEntVisible(client,entity)) { //tutaj kod jesli jest widoczny } else { //tutaj kod jesli nie jest widoczny }
i to co mozesz zrobic to jest warunek a nie funkcja, funkcja to jest to co ja zrobilem i podalem wyzej
BartekB
23.11.2015
Wiem wiem, po prostu zapomniałem jak to się nazywa Na pewno tego użyje, wydaje się być przydatne, i oby takie było
//Edit a przypadkiem używając GetEntityRenderMode bądź GetEntityRenderFx nie uzyskamy tej samej/podobnej odpowiedzi?
Użytkownik BartekB edytował ten post 23.11.2015 23:22
grankee
27.11.2015
co ma render do widzialnosci?
Ta funkcja po prostu sprawdza czy widzisz inny ent ale w sensie czy jest miedzy Toba a entem jakas widzialna przeszkoda, ktora uniemozliwia Ci jego zobaczenie, a nie czy ent jest widzialny bo nie jest przezroczysty