Skocz do zawartości

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

Szukanie gracza - Dagon


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

#1 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 12.12.2010 01:16

Mam takie pytanie... jak edytować ten kod
public UTIL_FindNearestOpponent(id, maxdist)
{
new best = 99999
new entfound = -1
new MyOrigin[3]
get_user_origin(id,MyOrigin)

for(new i=0; i<MAX_PLAYERS; i++)
{
if(i == id || !is_user_connected(i) || !is_user_alive(i) || get_user_team(id) == get_user_team(i))
continue

new TempOrigin[3],Float:fTempOrigin[3]
get_user_origin(i,TempOrigin)
IVecFVec(TempOrigin,fTempOrigin)

if(!UTIL_IsInView(id,i))
continue

new dist = get_distance(MyOrigin,TempOrigin)

if(dist < maxdist && dist < best)
{
best = dist
entfound = i
}
}

return entfound
}

aby po znalezieniu jednego gracza szukało innych w pobliżu?
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

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

Napisano 12.12.2010 12:19


public UTIL_FindNearestOpponent(id, maxdist)

{

        new best = 99999

        new entfound[33]

        new ile = 0;

        new MyOrigin[3]

        get_user_origin(id,MyOrigin)



        for(new i=0; i<MAX_PLAYERS; i++)

        {

                if(i == id || !is_user_connected(i) || !is_user_alive(i) || get_user_team(id) == get_user_team(i))

                        continue

                

                new TempOrigin[3],Float:fTempOrigin[3]

                get_user_origin(i,TempOrigin)

                IVecFVec(TempOrigin,fTempOrigin)



                if(!UTIL_IsInView(id,i))

                        continue



                new dist = get_distance(MyOrigin,TempOrigin)



                if(dist < maxdist && dist < best)

                {

                        best = dist

                        entfound[ile] = i

		      ile++;

                }

        }



        return entfound

}

  • +
  • -
  • 1

#3 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 12.12.2010 14:53

Dzięki, dzisiaj przetestuje.

A jeszcze jedno mam pytanie do tego kodu. Czy jakby dodał ten public pod inną nazwą, powiedzmy że "public UTIL_FindNearestOpponents(id, maxdist)" czyli byłby taki kod
Spoiler

to czy jakby w tym pierwszym (czyli w "public UTIL_FindNearestOpponent(id, maxdist)") dodał coś takiego
Spoiler

to wtedy będzie szukało drugiego gracz obok tego pierwszego znalezionego?

Dodano 12 grudzień 2010 - 14:53:

public UTIL_FindNearestOpponent(id, maxdist)
{
        new best = 99999
        new entfound[33]
        new ile = 0;
        new MyOrigin[3]
        get_user_origin(id,MyOrigin)

        for(new i=0; i<MAX_PLAYERS; i++)
        {
                if(i == id || !is_user_connected(i) || !is_user_alive(i) || get_user_team(id) == get_user_team(i))
                        continue
                
                new TempOrigin[3],Float:fTempOrigin[3]
                get_user_origin(i,TempOrigin)
                IVecFVec(TempOrigin,fTempOrigin)

                if(!UTIL_IsInView(id,i))
                        continue

                new dist = get_distance(MyOrigin,TempOrigin)

                if(dist < maxdist && dist < best)
                {
                        best = dist
                        entfound[ile] = i
		      ile++;
                }
        }

        return entfound
}

Po zrobieniu czegoś takiego przy probie kompilacji wyskakuje taki błąd
Error: Array must be indexed (variable "-unknown-") on line 6290
czyli dotyczy to tej funkcji
Spoiler

Użytkownik sebul edytował ten post 12.12.2010 15:04

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#4 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

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

Napisano 12.12.2010 15:22

zwraca ci tablice musisz zapisywac w tablicy chociaż lepsza byłą by referencja :)
  • +
  • -
  • 0

#5 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 12.12.2010 16:00

Co do mojego drugiego pytane to właśnie sprawdziłem przed chwilą i nie chodzi to... nie mam pomysłu jak to miałbym zrobić.

zwraca ci tablice musisz zapisywac w tablicy chociaż lepsza byłą by referencja :)

Czyli co musiałbym zapisać w tej tablicy? I oczywiście chodzi o dopisanie czegoś do "target"? Bo to właśnie konkretnie na tą linijkę wskazuje
new target = UTIL_FindNearestOpponent(id,600+player_intelligence[id]*10);

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo





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

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