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

[ROZWIĄZANE] Jak ustawić pozycję ENT'a tak, aby był on przede mną


Najlepsza odpowiedź GT Team , 27.04.2013 23:17

}
	if(is_user_alive(id) && 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(trace_hull(Origin, 1, 1, 1))
			client_print(id, print_center, "not")
		
		entity_set_float(g_iOwnedEnt[id], EV_FL_nextthink, 0.0)
	}
I ciągle pokazuje "not"

Dobra ! Do zamknięcia, ogarnąłem to i działa :) O to co zrobiłem:

Nowy stock:

stock bool:is_turret_stuck(id)
{
    static Float:fOrigin[3];
    pev(id, pev_origin, fOrigin);
    fOrigin[2]+=36.0
    engfunc(EngFunc_TraceHull, fOrigin, fOrigin, 0, HULL_HUMAN, id, 0);
     
    if(get_tr2(0, TR_StartSolid) || get_tr2(0, TR_AllSolid) || !get_tr2(0, TR_InOpen))
        return true;
     
    return false;
}

 

I

if(is_user_alive(id) && 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_player_stuck(g_iOwnedEnt[id]))
            client_print(id, print_center, "not")
        
        entity_set_float(g_iOwnedEnt[id], EV_FL_nextthink, 0.0)
    }
 

 

To close :)!

 

Przejdź do postu


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
24 odpowiedzi w tym temacie

#1 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 26.04.2013 17:58

Witam, jak ustawić pozycję ENTA, tak abym nie wazne gdzie patrzył była ona przede mną gdzieś ~45 jednostek.
new Float:Origin[3], Float:Origin2[3]
pev(id, pev_origin, Origin)pev(ent, pev_origin, Origin2)
// Tutaj cała filozofia, jakieś *-1.0 czy coś..
set_pev(ent, pev_origin, Origin2)
edit: Tutaj ssy m.w. o co mi chodzi: http://imageshack.us...tdnight0004.bmp http://imageshack.us...dnight0012.png/

Użytkownik PaTrIcKx edytował ten post 26.04.2013 18:04

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#2 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 26.04.2013 18:17

Najprościej jest ustawić model jako broń (model v_ dla Ciebie i w_ dla otoczenia), wtedy nie musisz pilnować co "klatkę" jego pozycji i całkiem estetycznie da się to zrobić. Jeśli jednak chcesz mieć dalej w ręku broń, musisz brać swoją pozycję, i kierunek w którym jesteś zwrócony. Przyda Ci się do tego to:

 

objectX = playerX+offset*sin(playerAngle);

objectY = playerY+offset*cos(playerAngle);

Z pobraniem playerX, playerY i playerAngle (i z domyśleniem się najpierw czym mają one być) chyba problemów nie będziesz miał. Jednak ta metoda będzie powodowała, że obiekt co jakiś czas zostanie za Twoimi plecami, póki serwer nie skoryguje jego pozycji.


  • +
  • -
  • 1
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#3 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6034
Godlike

  • Postów:10832
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 26.04.2013 18:24

pobierasz angles gracza

http://amxmodx.org/d...anglevector.htm

ANGLEVECTOR_FORWARD zwróci ci wektor "do przodu"

normalizujesz otrzymany wektor

mnożysz go przez skalar który jest w twoim przypadku odległością między graczem a tym obiektem

i dodajesz do origin gracza otrzymujesz dzięki temu nową pozycje którą ustawiasz entowi

 

 


  • +
  • -
  • 2

#4 K!113r

    Czempion

  • Power User

Reputacja: 385
Wszechpomocny

  • Postów:865
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 26.04.2013 19:45

http://amxx.pl/topic...rzedza-graczem/


  • +
  • -
  • 1

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#5 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 26.04.2013 20:14

Jeśli chcesz coś nieść przed sobą, to jednak polecam podmianę modelu broni. Wtedy możesz dodać nawet ręce odpowiednio trzymające przedmiot :)


  • +
  • -
  • 1
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#6 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 26.04.2013 20:36

Edit!

Działa. Kod od sebula trochę zmodyfikowałem i hula aż miło :) Tylko jak pozbyć się opóźnienia W stosunku do tego ? Add to full pack ?

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#7 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 26.04.2013 20:39

Hmm, a jak chcesz patrzeć niby na bok, a mieć ciało skierowane prosto? Czy chodzi Ci może o chodzenie klawiszami A, D?


Użytkownik GwynBleidD edytował ten post 26.04.2013 20:40

  • +
  • -
  • 0
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#8 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 26.04.2013 23:09

tak, przypuścmy idę na Północ, a patrzę się na wschód. I wieżyczka też jest skierowana na wschód. o to się rozchodzi. :)

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#9 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 27.04.2013 00:20

No to podmiana broni na 100% by Cię satysfakcjonowała. Tylko jeszcze przy "stawianiu" wieżyczki byś musiał przeliczyć pozycję gdzie ona ma wylądować.

Aby pobrać wektor z celownika, a nie z ruchu gracza, należy najpierw pobrać 2 wektory: pozycji gracza, i miejsca w które patrzy.
 
get_user_origin(id, eyeOrigin, 1);
get_user_origin(id, aimOrigin, 3);

aimOrigin[0] = aimOrigin[0] - eyeOrigin[0];
aimOrigin[1] = aimOrigin[1] - eyeOrigin[1];
aimOrigin[2] = aimOrigin[2] - eyeOrigin[2];
W ten sposób uzyskujesz wektor kierunku patrzenia, a nie przemieszczenia. Ma jednak on jedną wadę: długość jego może być różna. Trzeba więc go skrócić do długości równej 1:
new Float:aimLen = vector_length(aimOrigin);
aimOrigin[0] = aim_origin[0]/aimLen;
aimOrigin[1] = aim_origin[1]/aimLen;
aimOrigin[2] = aim_origin[2]/aimLen;
W ten sposób uzyskasz wektor jednostkowy kierunku patrzenia. No i gotowa funkcja:
 
stock get_origin_from_dist_player(id, Float:dist, Float:origin[3], zPosition=3) {
    new Float:eyeOrigin[3];
    get_user_origin(id, eyeOrigin, 1);
    if(dist == 0) {
        origin[0] = eyeOrigin[0];
        origin[1] = eyeOrigin[1];
        origin[2] = eyeOrigin[2];
        return;

    }
    
    new Float:aimOrigin[3];
    get_user_origin(id, aimOrigin, 3);
    aimOrigin[0] = aimOrigin[0] - eyeOrigin[0];
    aimOrigin[1] = aimOrigin[1] - eyeOrigin[1];
    aimOrigin[2] = aimOrigin[2] - eyeOrigin[2];

    new Float:aimLen = vector_length(aimOrigin);
    if(!zPosition)
        get_user_origin(id, eyeOrigin);
    
    origin[0] = aimOrigin[0]*aimLen;
    origin[1] = aimOrigin[1]*aimLen;
    origin[2] = zPosition==1?aimOrigin[0]*aimLen:eyeOrigin;

}
Dla parametru zPosition:
0 - otrzymujemy wysokość docelowego wektora na wysokości oczu gracza
1 - otrzymujemy wysokość docelowego wektora względem wysokości gracza (realną, czyli tam gdzie patrzy)
2 - otrzymujemy wysokość docelowego wektora równą położeniu Z gracza (domyślnie)

Użytkownik GwynBleidD edytował ten post 27.04.2013 00:23

  • +
  • -
  • 0
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#10 sebul

    Godlike

  • Junior Admin

Reputacja: 2016
Godlike

  • Postów:5411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 27.04.2013 00:44

Edit!

Działa. Kod od sebula trochę zmodyfikowałem i hula aż miło :) Tylko jak pozbyć się opóźnienia W stosunku do tego ? Add to full pack ?

Opóźnienia się nie pozbędziesz (robiąc to za pomocą mojego stocka), bo musiałbyś bardzo często ustawiać pozycję enta, a nie wiem czy to jest dobrym pomysłem. Oczywiście chodzi o te tak jakby klatkowanie? Czyli ent nie przesuwa się płynnie?
  • +
  • -
  • 0
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Generator tabeli expa - aż do 103600 poziomu

#11 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 27.04.2013 00:44

Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

Warning: Tag mismatch on line 202
Warning: Tag mismatch on line 212
Warning: Tag mismatch on line 219
Error: Array must be indexed (variable "eyeOrigin") on line 223

1 Error.
Could not locate output file C:\Users\STRIKER\Desktop\test!$.amx (compile failed).
stock get_origin_from_dist_player(id, Float:dist, Float:origin[3], zPosition=3) {
    new Float:eyeOrigin[3];
    get_user_origin(id, eyeOrigin, 1); <- 202
    if(dist == 0) {
        origin[0] = eyeOrigin[0];
        origin[1] = eyeOrigin[1];
        origin[2] = eyeOrigin[2];
        return;

    }
    
    new Float:aimOrigin[3];
    get_user_origin(id, aimOrigin, 3); <- 212
    aimOrigin[0] = aimOrigin[0] - eyeOrigin[0];
    aimOrigin[1] = aimOrigin[1] - eyeOrigin[1];
    aimOrigin[2] = aimOrigin[2] - eyeOrigin[2];

    new Float:aimLen = vector_length(aimOrigin);
    if(!zPosition)
        get_user_origin(id, eyeOrigin); <-219
    
    origin[0] = aimOrigin[0]*aimLen;
    origin[1] = aimOrigin[1]*aimLen;
    origin[2] = zPosition==1?aimOrigin[0]*aimLen:eyeOrigin;

}

edit: do sebula
Opóźnienia się nie pozbędziesz, bo musiałbyś bardzo często ustawiać pozycję enta, no chyba że nie chodzi tutaj o te opóźnienie.
Chodzi o wizualność. Ogólnie robie przemieszczanie wieżyczek na klawisz "e" i teraz wszystko działa ( czekam aż GwynBleidD poprawi kod, by sprawdzić jego tezę) tylko mam problem z tym kodem (inna bajka :D)
if(gTurretsAmmo[id][sentryid] <= 0 && !IsMovingEnt[id] && !g_iOwnedEnt[id])
{
	entity_set_float(ent, EV_FL_nextthink, get_gametime()+0.1);
	return PLUGIN_CONTINUE	
}
Tutaj przerywa thinka tego enta co powoduje, że gdy "upuszczę" wieżyczke, zmienne się wyzerują (IsMovingEnt jest jako bool więc jako false, g_iOwnedEnt na 0) i "think" nie chce działać.

Użytkownik PaTrIcKx edytował ten post 27.04.2013 00:49

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#12 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 27.04.2013 12:15

origin[2] = zPosition==1?aimOrigin[0]*aimLen:eyeOrigin;

zamień na

origin[2] = zPosition==1?aimOrigin[2]*aimLen:eyeOrigin[2];

 

A co do warningów: usuń wszędzie Floaty, bo się rozpędziłem myśląc, że get_user_origin zwraca Float.

 


  • +
  • -
  • 1
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#13 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 27.04.2013 17:21

stock get_origin_from_dist_player(id, dist, origin[3], zPosition=3) {
    new eyeOrigin[3];
    get_user_origin(id, eyeOrigin, 1);
    
    if(dist == 0) {
        origin[0] = eyeOrigin[0];
        origin[1] = eyeOrigin[1];
        origin[2] = eyeOrigin[2];
        return;

    }
    
    new aimOrigin[3];
    get_user_origin(id, aimOrigin, 3);
    
    aimOrigin[0] = aimOrigin[0] - eyeOrigin[0];
    aimOrigin[1] = aimOrigin[1] - eyeOrigin[1];
    aimOrigin[2] = aimOrigin[2] - eyeOrigin[2];
    
    new Float:test[3]
    IVecFVec(aimOrigin, test)
    new aimLen = vector_length(test))
    
    if(!zPosition)
        get_user_origin(id, eyeOrigin);
    
    origin[0] = aimOrigin[0]*aimLen
    origin[1] = aimOrigin[1]*aimLen
    origin[2] = zPosition==1?aimOrigin[2]*aimLen:eyeOrigin[2]

}
I wszystko działa pięknie:) Teraz jest tylko jeden problem, nie będę tworzył tematu, gdyż to są powikłania z tego :P

Ogólnie robie przemieszczanie wieżyczek na klawisz "e" i teraz wszystko działa tylko mam problem z tym kodem (inna bajka :D)
if(gTurretsAmmo[id][sentryid] <= 0 && !IsMovingEnt[id] && !g_iOwnedEnt[id])
{
	entity_set_float(ent, EV_FL_nextthink, get_gametime()+0.1);
	return PLUGIN_CONTINUE	
}
Tutaj przerywa thinka tego enta co powoduje, że gdy "upuszczę" wieżyczke, zmienne się wyzerują (IsMovingEnt jest jako bool więc jako false, g_iOwnedEnt na 0) i "think" nie chce działać.
To znaczy, postawię wieżyczke - Jest OK, przemieszcze ją i upuszczę - Think się przerywa, gdyż wykonuje się to sprawdzanie. Nie wiem, czemu ona się wywołuje tutaj daje cały kod, który może mieć wspólnego coś:
public client_PreThink(id)
{
	if(is_user_alive(id) && g_iOwnedEnt[id] && IsMovingEnt[id])
	{
		static Float:Origin[3], Float:SOrigin[3], GOrigin[3]
		
		get_user_origin(id, GOrigin, 3)
			
		IVecFVec(GOrigin, Origin)
		
		pev(g_iOwnedEnt[id], pev_origin, SOrigin)
		
		sentry_turntotarget2(g_iOwnedEnt[id], SOrigin, Origin)
		
		Origin[2]-=36.0
		get_origin_from_dist_player(id, 45.0, SOrigin)
		set_pev(g_iOwnedEnt[id], pev_origin, Origin)
	}
}
public fw_CmdStart( id, uc_handle, randseed )
{
	if (!is_user_alive(id))
		return FMRES_IGNORED

	//new button = pev(id, pev_button)
	new button = get_uc( uc_handle , UC_Buttons );
	new oldbutton = pev(id, pev_oldbuttons)
	if( button & IN_USE && !(oldbutton & IN_USE))
		cmdGrabEnt(id)
	else if(oldbutton & IN_USE && !(button & IN_USE))
		cmdStopEnt(id)

	return FMRES_IGNORED;
}

public cmdGrabEnt(id)
{
	new entlist[3]
	new ent
	if(find_sphere_class(id, "turret", 12.0, 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
	
	return PLUGIN_HANDLED
}
public cmdStopEnt(id)
{
	if (!g_iOwnedEnt[id])
		return PLUGIN_HANDLED;
	new ent = g_iOwnedEnt[id]
	
	set_pev(ent,pev_rendermode, kRenderNormal)	
	
	g_iOwnedEnt[id] = 0;
	IsMovingEnt[id] = false

	drop_to_floor(ent)
	PlayerTurretUpgradeMenu1(id, -1, -1)
	return PLUGIN_HANDLED;
}
Sentry Think
http://wklej.to/oj4AX

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#14 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 27.04.2013 18:53

Rozumiem, że przestaje Ci się wykonywać Think wieżyczki, tak? W takim razie dodaj:

entity_set_float(ent, EV_FL_nextthink, get_gametime()+0.1)

 

po ustawieniu wieżyczki spowrotem na ziemi. Powinno pomóc.

 

Na przyszłość: nie polecam mieszania kilku bibliotek przy edycji jednego enta (fakemeta + engine), jeśli nie jest to koniecznie potrzebne :)


  • +
  • -
  • 0
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#15 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 27.04.2013 19:07

Nie dział ;P - Think się w wykonuje, tylko jakimś cudem wykonuje się też ta funkcja
if(gTurretsAmmo[id][sentryid] <= 0 && !IsMovingEnt[id] && !g_iOwnedEnt[id])
{
	entity_set_float(ent, EV_FL_nextthink, get_gametime()+0.1);
	return PLUGIN_CONTINUE	
}

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#16 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 27.04.2013 19:16

A co panocku ten warunek ma robić?

 

Bo robi to:

jeśli amunicja wieżyczki mniejsza lub równa 0 (nie wiem co to ma oznaczać, chyba że amunicja się skonczyła)

ORAZ

jeśli wieżyczka NIE jest przenoszona

ORAZ

jeśli wieżyczka NIE posiada właściciela (nie wiem też do czego do końca to służy)

 

to ustaw następny think za 0.1s i zakończ tego thinka.


Użytkownik GwynBleidD edytował ten post 27.04.2013 19:21

  • +
  • -
  • 0
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#17 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 27.04.2013 19:20

Każda wieżyczka ma określoną ilośc amunicji. Ten warunek sprawdza, czy wieżyczka posiada amunicje, gdy jej nie ma, przerywa thinka i ustala następnego za 0.1s.


Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#18 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 27.04.2013 19:22

Pomyśl nad tym warunkiem, oraz nad tym, jakie wartości mają te zmienne, gdy się to wykonuje (możesz sobie je gdzieś printnąć jak się wykonają), to szybko znajdziesz błąd.


  • +
  • -
  • 0
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#19 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 27.04.2013 19:25

Już robiłem pisałem w alfabetycznie funkcje tego thinka, i gdy nie chwyciłem wieżyczki, było : a, b, c, d, e, f, g, h, i. Lecz po przeniesieniu wieżyczki, wypisywało tylko 'a'. A

client_print(0, 3, "a")
if(gTurretsAmmo[id][sentryid] <= 0 && !IsMovingEnt[id] && !g_iOwnedEnt[id])
{
    entity_set_float(ent, EV_FL_nextthink, get_gametime()+0.1);
    return PLUGIN_CONTINUE    
}

 

się tam znajdowało


Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#20 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 27.04.2013 19:38

Ehh...
 
dopisz wewnątrz tego IFa cośtakiego:

client_print(0, 3, "%d %d %d", gTurretsAmmo[id][sentryid], IsMovingEnt[id], g_iOwnedEnt[id])
I będziesz widział o co chodzi. Później tylko przeanalizować dlaczego się tak dzieje.
  • +
  • -
  • 0
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark




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

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