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

Najlepszy gracz mapy


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

#1 dram

    Wszechwidzący

  • Użytkownik

Reputacja: 16
Początkujący

  • Postów:277
  • Lokalizacja:xxxx
Offline

Napisano 07.10.2010 17:25

Witam.

Chciałbym napisać coś takiego.

Że pod koniec mapy plugin szuka najlepszego gracza z obydwu teamów i wykonuje na tym graczu dany kod. Przykładowo ten gracz dostaje HE.

Wiem ,że trzeba będzie pętlę użyć. Ale w którym miejscu na liście eventów nie ma eventu który wykonuje się pod koniec mapy tylko pod koniec rundy .

Tutaj ta lista: Half-Life 1 Game Events - AlliedModders Wiki

Pozdrawiam czekam na odpowiedź.
  • +
  • -
  • 0
Co oferuje?

Pisanie pluginów amxx/modow itd
Skryptow php

Kontakt na PW LUB GG

#2 kyku

    Wszechmogący

  • Użytkownik

Reputacja: 166
Profesjonalista

  • Postów:612
  • Lokalizacja:Jasło
Offline

Napisano 07.10.2010 17:29

co jakis czas taskiem musisz sprawdzac ile czasu pozostalo do konca mapy
get_timeleft np.
  • +
  • -
  • 0

#3 dram

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 16
Początkujący

  • Postów:277
  • Lokalizacja:xxxx
Offline

Napisano 07.10.2010 17:32

No dobra ale teraz to w jedną logiczną całość przyjmując domyślne ustawienie ,że do końca mapy pozostało 25 minut. Ale już na 24 minucie będzie task do pętli, i jak ta pętla ma wyglądać która szuka najlepszego gracza na mapie*?

Pozdrawiam

Chociaż wole żeby pobierało mi samo ile zostało do końca mapy bo może być tak że mapa zostanie rozszerzona (podczas votowania w amxX)

Dodano 07 październik 2010 - 17:57:
Dobra mam taska.

Teraz kwestia pętli która szuka gracza który ma najwięcej fragów.

Proszę o pomoc.

Pozdrawiam.

Użytkownik dram edytował ten post 07.10.2010 17:33

  • +
  • -
  • 0
Co oferuje?

Pisanie pluginów amxx/modow itd
Skryptow php

Kontakt na PW LUB GG

#4 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 08.10.2010 09:04

set_task ma flagę "d", która odpowiada za czas przed końcem mapy

Łatwo i szybko można to zrobić z sortowaniem tablicy polecam SortCustom2D
Dokumentacja AMXX.pl - Nieoficjalny polski support AMX Mod X
tu jest przykład użycia; myArray powinien mieć jeszcze 1 kolumnę na id gracza, ale funkcja sortująca porownaj2D się nie zmieni

Ten kod nie uwzględnienia przypadku, gdy jest kilku graczy którzy mają najlepsze fragi.

public taskEndMap(){
        new myArray[32][3], len = 0;
        
        for(int id=1;id<33;id++){
                if(!is_user_connected(id)) continue;
        
                myArray[len][0] = get_user_frags(id);
                myArray[len][1] = get_user_deaths(id);
                myArray[len][2] = id;
                len++;
        }
        if(len == 0) return;
        SortCustom2D(myArray, len, "porownaj2D");
       
        log_amx("Najlepszy gracz: %d! %d fragów, %d smierci", myArray[0][2], myArray[0][0], myArray[0][1]);
}

/*
 * Sortowanie malejące
 *
 * Nie używamy własnych danych, więc data[] i data_size nie są potrzebne
 * podobnie jak array, więc lista parametrów skróciła się do 2
 */
public porownaj2D(const elem1[], const elem2[]){
        if(elem1[0] == elem2[0]){
                //gdy ilość zabójstw obu graczy jest równa
                //o kolejności decyduje ilość śmierci

                if(elem1[1] == elem2[1])
                        //no cóż, takie same staty
                        return 0;
                else if(elem1[1] < elem2[1])
                        //zabił tyle samo przeciwników, lecz ginął rzadziej -> idzie przed
                        return -1;
                //zabił tyle samo przeciwników, lecz ginął częściej
                return 1;
        }
        else if(elem1[0] > elem2[0])
                // zabił więcej przeciwników, więc idzie przed
                return -1;
        //zabił mniej przeciwników
        return 1;
}

  • +
  • -
  • 0

#5 ZixI

    Zaawansowany

  • Użytkownik

Reputacja: 15
Początkujący

  • Postów:86
  • Imię:Dominik
  • Lokalizacja:Kęty
Offline

Napisano 08.10.2010 18:01

plugin_end ( )
{
    //code 
}

Powyzsza funkcja jest wywolywana przy zmianie mapy lub prawidlowym zamknieciu serwera. Prawdopodobnie nie wychwyci crasha.

Nie wiem czy o to Ci chodzi, ale sprawdź :)
  • +
  • -
  • 0

Dołączona grafika


#6 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 09.10.2010 12:00

Może i dobrze, ale komunikatu wtedy nie wyświetlisz

30s przed zmianą mapy:
set_task(30.0, "taskEndMap", 356, _, _, "d");

  • +
  • -
  • 0




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

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