Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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.

  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Problem z SOLID_BBOX u ent'a i z odległością.


  • Zamknięty Temat jest zamknięty
7 odpowiedzi w tym temacie

#1 Svizz

    Zaawansowany

  • Użytkownik

Reputacja: 33
Życzliwy

  • Postów:142
  • GG:
  • Imię:Svizz
  • Lokalizacja:Polska :)
Offline

Napisano 18.05.2011 14:51

Witam, mam stworzonego enta - wymiary, model, klasa - wszystko jest. Mam tylko dwa problemy:

1. Usiłuje nadać bytowi SOLID_BBOX, ale nadal można przez niego normalnie przejść. Robię to tak:
set_pev(npc, pev_solid, SOLID_BBOX)
Taki sposób też nie działa:
set_pev(npc, pev_solid, 2)

2. Chcę wywołać jakąś funkcję, gdy gracz zbliży się do bytu na x odległość. Jaką funkcją można sprawdzić odległość od bytu i gdzie (w jakim forwardzie) to sprawdzić. Jest jakaś inna możliwość niż wywołanie tego w think'u bytu lub gracza (z wiadomego powodu)?
  • +
  • -
  • 0

#2 FreZZy

    Guru

  • Zbanowany

Reputacja: 210
Profesjonalista

  • Postów:716
  • GG:
  • Imię:Paweł
  • Lokalizacja:Wwa
Offline

Napisano 18.05.2011 15:01

2. Chcę wywołać jakąś funkcję, gdy gracz zbliży się do bytu na x odległość. Jaką funkcją można sprawdzić odległość od bytu i gdzie (w jakim forwardzie) to sprawdzić. Jest jakaś inna możliwość niż wywołanie tego w think'u bytu lub gracza (z wiadomego powodu)?

nie odpowiem ci kodem bo jestem nie u siebie, ale wydaje mi się że w Poke było tak, że gdy odsunąłes się na jakąś odległość od NPC Oak'a to Ci menu znikało

Tak amo w jedynce, jedenym gotowym modem z którego możesz brać funkcje jest poke

wadą jego jest kilkadziesiąt plików...

#3 Svizz

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 33
Życzliwy

  • Postów:142
  • GG:
  • Imię:Svizz
  • Lokalizacja:Polska :)
Offline

Napisano 18.05.2011 15:05

No właśnie w tym problem, że nie mogę tego w pokemodzie znaleźć. To jak, pomoże ktoś? :)
  • +
  • -
  • 0

#4 FreZZy

    Guru

  • Zbanowany

Reputacja: 210
Profesjonalista

  • Postów:716
  • GG:
  • Imię:Paweł
  • Lokalizacja:Wwa
Offline

Napisano 18.05.2011 15:18

jak nie możesz znaleźć konkretnego pliku to nazywa się bodajże "oak" ;)

jak wróce do domciu to ci pomoge

#5 diablix

    emeryt

  • Przyjaciel

Reputacja: 507
Wszechwiedzący

  • Postów:663
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Warszawa
Offline

Napisano 18.05.2011 15:53

1. Pokaż cały kod

2.

stock bool:JestObokBytu(id, ent, const gszEntClassname[], Float:fDistance){
new szClassname[64];
pev(ent, pev_classname, szClassname, sizeof szClassname - 1);

if(equal(szClassname, gszEntClassname)){
new Float:fOrigin[3];
entity_get_vector(ent, EV_VEC_origin, fOrigin);

if(find_ent_in_sphere(id, fOrigin, fDistance)){
if((1 <= id <= get_maxplayers() && is_user_alive(id)){
return true;
}
}
}
return false;
}


Przykładowe użycie

if(JestObokBytu(id, ent, "klasa_bytu", 45.0)){
//gracz jest obok bytu (w zasiegu 45 unitow)
}

Użytkownik diablix edytował ten post 18.05.2011 16:38

  • +
  • -
  • 1

#6 Optymalny193

    Wszechwidzący

  • Zbanowany

Reputacja: 30
Życzliwy

  • Postów:294
  • Imię:Paweł
  • Lokalizacja:Europa
Offline

Napisano 18.05.2011 16:42

Co mam w tym zrobić:
if((find_ent_in_sphere(id, vOrigin, fDistance))){
Żeby się skompilowalo bo nie wiem co to vorigin

I czy to jest dobre:

public npc_think(id, ent) {
// Put your think stuff here.
entity_set_float(id,EV_FL_nextthink,halflife_time() + 0.01)

if(JestObokBytu(id, ent, "npc_resp", 45.0)){
//gracz jest obok bytu (w zasiegu 45 unitow)
}
}


#7 Svizz

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 33
Życzliwy

  • Postów:142
  • GG:
  • Imię:Svizz
  • Lokalizacja:Polska :)
Offline

Napisano 18.05.2011 17:04

Dzięki wielkie diablix.

To kawałek mojego kodu (wystarczy?):
        new npc = create_entity("info_target")
	
// kod dotyczacy gracza - nie wazne

	new Float:maxs[3] = {16.0,16.0,36.0}
	new Float:mins[3] = {-16.0,-16.0,-36.0}
	
	entity_set_size(npc,mins,maxs)
	set_pev(npc, pev_solid, SOLID_BBOX)
	
	entity_set_string(npc,EV_SZ_classname,"npc_przyklad")
	entity_set_model(npc,MODEL_NPC)
	
	entity_set_float(npc,EV_FL_animtime,2.0)
	entity_set_float(npc,EV_FL_framerate,1.0)
	entity_set_int(npc,EV_INT_sequence,1)

Wiem, że pomieszana fm z engine, ale to poprawie - pisane na szybko.

Użytkownik Svizz edytował ten post 18.05.2011 17:05

  • +
  • -
  • 0

#8 diablix

    emeryt

  • Przyjaciel

Reputacja: 507
Wszechwiedzący

  • Postów:663
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Warszawa
Offline

Napisano 18.05.2011 17:46

Spróbój w takiej kolejnośći

new npc = create_entity("info_target")
entity_set_string(npc,EV_SZ_classname,"npc_przyklad")
entity_set_int(npc, EV_INT_solid, SOLID_BBOX);
entity_set_model(npc,MODEL_NPC)
new Float:maxs[3] = {64.0,64.0,64.0}
new Float:mins[3] = {-64.0,-64.0,-64.0}

entity_set_size(npc,mins,maxs)

entity_set_float(npc,EV_FL_animtime,2.0)
entity_set_float(npc,EV_FL_framerate,1.0)
entity_set_int(npc,EV_INT_sequence,1)

Użytkownik diablix edytował ten post 18.05.2011 17:57

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych