←  Pluginy AMXX

AMXX.pl: Support AMX Mod X i SourceMod

»

Achievements

  • +
  • -
Fili:P - zdjęcie Fili:P 19.01.2012

Dołączona grafika
Cześć, zaprezentuje wam system achievementów, niestety jedynie z zapisem nvault, ponieważ sql-a jeszcze nie zrozumiałem. Jeśli jest ktoś chętny to może pomóc w zapisie sql. Starałem się napisać ten plugin jak najbardziej optymalnie. W przyszłych wersjach postaram się dodać natywy i być może forwardy, aby każdy achievement był w oddzielnym pliku lub, aby wszystkie achievenemty były w jednym oddzielnym pliku.

Dołączona grafika
Standardowa.
Dołączona grafika
Nvault,
HamSandwich,
Colorchat.
Dołączona grafika
say /ach
say_team /ach

Wyświetla menu ze statusem achievementów, po wyborze itemu w menu pojawia się jego opis i obecny stan.

Dołączona grafika
ach_display_gz 0/1 - standardowo 1, jeśli 0 to po zdobyciu acha nie wyświetla "Gratulacje %s! Zdobyłeś osiągnięcie %s!", jest stworzone, ponieważ forwardem możemy robić to sami ( forward nie testowany ).

Dołączona grafika
W obecnej wersji nie ma cvarów, bo nie widziałem takiej konieczności. Pierwszy raz pracował z tak dużą ilością (jak na mnie) zdarzeń silnika gry. Możliwe że zamiast używać Fakemety HamSandiwch i CSX wystarczyło użyć samej kanapki, lecz jeśli tak to w przyszłej wersji. Póki co mamy do dyspozycji 11 osiągnięć oczywiście dodam więcej. Dodawanie achievementów jest o tyle fajne, iż nawet na nvault nie jest wymagane resetowanie zapisu ani edytowanie go co dodanie osiągnięcia. Sprawdzenie czy osiągniecie jest zaliczone występuję jedynie w HamSpawn. Mam nadzieję, że spodoba wam się mój plugin. Proszę pisać komentarze przede wszystkim z uzasadnieniem.

Dołączona grafika
native ach_get_index(const name[]);
native ach_get_stance(id, ach_id); // pobiera czy gracz zaliczył acha czy nie 0/1
native ach_get_status(id, ach_id); // pobiera postęp w achu
native ach_get_name(ach_id, const var[], len); // pobiera nazwe acha
native ach_get_desc(ach_id, const var[], len); // pobiera opis acha
native ach_get_target(ach_id); // pobiera cel acha (wymagany postep)
native ach_get_max(); // pobiera ilosc stworzonych achow
native ach_set_stance(id, ach_id, value); // ustawia stan acha
native ach_set_status(id, ach_id, value); // ustawia postep w acha
native ach_add(const ach_name[], const ach_desc[], ach_target);
native ach_reset_status(id, ach_id); // resetuje postep acha (ustawia na 0) przydatne jezeli robimy achy typu w rundzie
native ach_add_status(id, ach_id, value); // dodaje x punktów do obecnej wartosci postepu acha

Dołączona grafika
forward ach_give_reward(pid, aid); // wywolywany kiedy gracz otrzymuje info o ukończeniu acha ( możemy mu tu dać nagrode ).
forward ach_load_post( id ); // wywolywany po wczytaniu danych, aby bezpiecznie operowac w client_authorized <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/smile.png' class='bbc_emoticon' alt=':)' />
forward ach_save_pre( id, save_in ); // wywoływany przed zapisem danych, dobrze jest tu zmienić na przykład wartość postępu, aby nie kolidować z systemem
forward ach_save_post( id, save_in ); // wywolywany po zapisie danych.

save_in może mieć 2 wartości:

#define SAVE_IN_DISCONNECT 1
#define SAVE_IN_DEATH 2

Wartość 1 jest wywoływana przy wyjściu z serweru, a 2 przy śmierci gracza. Oczywiście przy wyjściu z serwera nie wywołuje się ach_save_post, bo to nie miałoby sensu.

Oświadczam wam, że pracuje teraz nad nową wersją.
Dołączona grafika
  • 1.0.0
Podstawowa wersja.
  • 1.0.0b łatka i dodanie kilku achów
Dodana łatka
Dodanie kilku achów
  • 1.0.1
Dodanie 4 natywów
Możliwość dostawania w nagrodę za ukończenie acha xp-a w nowym cod modzie
Łatka [dzięki torrent]
  • 1.0.1b
Wymagany moduł engine
Naprawa acha "Żywy lampion"
Naprawa acha "Pan śmierci"
Nowy cvar
Forward wywoływany podczas otrzymania acha ( nie testowany )
  • 1.0.1c
Łatka zapisu
  • 1.0.2
Dodanie natywów
Dodanie forwardu
  • 1.1.0
Użycie tablic dynamicznych (dzięki DarkGL i Muzzi za pomoc przy tablicach)
Dodanie natywów
Usunięcie achów, ponieważ możemy je tworzyć sami jak klasy do coda
  • 1.1.1
Optymalizacja.
Dodanie 3 nowych forwardów.
Usunięcie kilku zbędnych natywów.
Dołączona grafika
Przykładowy kod z użyciem forwardu:

#include <amxmodx>
#include <achievements>

public plugin_init() {
register_plugin("test", "1.0", "Fili:P")
}
public ach_give_reward(pid, aid)
{
client_print(pid, print_chat, "Zaliczyles acha!");
}

Przykładowy kod tworzący acha w oddzielnym pluginie:

#include <amxmodx>
#include <achievements>
new g_HandleAch;
public plugin_init() {
register_plugin("achy", "1.0", "Fili:P")
g_HandleAch = ach_add("Staly bywalec", "Wejdz 1000 razy na serwer", 1000);
}
public client_putinserver(id)
{
ach_add_status(id, g_HandleAch, 1);
}


Radze opozniac taskiem funkcje, ktore bd w chwili wejscia na serwer

Projekt nie będzie już rozwijany, chyba że zrozumiem sqlx. Mogą występować błędy kiedy usuwamy achy.

Zakazuje kopiowania treści na inne witryny bez mojej zgody!
Dołączona grafika
Wersja 1.1.0:
Załączony plik  achievements.sma   9,82 KB   504 Ilość pobrań
Załączony plik  achievements.inc   804 bajtów   440 Ilość pobrań

Wersja 1.1.1:
Załączony plik  achievements.inc   1,02 KB   554 Ilość pobrań
Załączony plik  achievements.sma   8,69 KB   632 Ilość pobrań
Misiaczek ;c (19.02.2012 19:01):
Aktualizacja na prośbę autora
Odpowiedz

  • +
  • -
Drzanas - zdjęcie Drzanas 19.01.2012

Jakieś profity są za zdobycie osiagnięć?
No i jakie są teraz te osiągniecia?
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 19.01.2012

Hmm profity, prawdopodobnie chodzi ci o nagrody. Odpowiedź brzmi nie, ponieważ nie jest to potrzebne póki co. Jak będzie zapis sql to pomyśle nad web statami. Zaraz dodam do 1 posta liste achów.
Odpowiedz

  • +
  • -
FetaGreen - zdjęcie FetaGreen 19.01.2012

10. Dziurawe rece - Zgub 1000 przedmiotow

Czyli jak wyrzuce G ?
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 19.01.2012

10. Dziurawe rece - Zgub 1000 przedmiotow

Czyli jak wyrzuce G ?

Tak lub jeśli zginiesz i wypadną ci rzeczy.
Odpowiedz

Trikolo - zdjęcie Trikolo 19.01.2012

Można by było dodać do tego jakieś nagrody exp albo coś ale dobra ...
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 19.01.2012

W wersji 1.0.1 będą natywy i możliwa ingerencja z cod modem.
Odpowiedz

  • +
  • -
ToRRent - zdjęcie ToRRent 19.01.2012

bardzo dobry plugin :)
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 19.01.2012

Update 1.0.1
Odpowiedz

  • +
  • -
ToRRent - zdjęcie ToRRent 19.01.2012

11. Niewiarygodne - Zabij wroga headshotem z HE

może jestem ślepy ale w kodzie nie widzę byś wprowadził warunek że musi być headshot
Odpowiedz

  • +
  • -
sharkowy - zdjęcie sharkowy 19.01.2012

new hit = get_tr2(trace, TR_pHit);

  

    if(!is_user_connected(hit))

	    return;

  

    new hitzone = get_tr2(trace, TR_iHitgroup);

    if(hitzone == HIT_HEAD)

	    AchStatus[id][1]++;
Odpowiedz

  • +
  • -
ToRRent - zdjęcie ToRRent 19.01.2012

to nie jest ten challenge :)
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 19.01.2012

Kod sharka, sprawdza czy nabój trafił w głowe.
kod odpowiadający za headshot granatem to:
if(killer!=victim && wpnindex == CSW_HEGRENADE)
AchStatus[killer][10]++;

W client_death
Odpowiedz

  • +
  • -
Stachuu :D ?? - zdjęcie Stachuu :D ?? 19.01.2012

fajne + :]
Odpowiedz

  • +
  • -
ToRRent - zdjęcie ToRRent 19.01.2012

no wiem że tu ale wytłumacz gdzie dokładnie jest warunek o tym że ma być hs ? :D

btw. przydał by się jakiś przykład użycia natywów w oddzielnym pluginie bo nie wiem np. jak nazwać i dodać opis do takiego osiągnięcia skoro do dyspozycji są tylko natywy postępu
Użytkownik =ToRRent= edytował ten post 19.01.2012 19:42
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 19.01.2012

o_O nie ma leci + zaraz poprawiam

@UP
Natywy do dodawania będą kiedy zamienię normalne tablice na dynamiczne.
Odpowiedz

_nothing_ - zdjęcie _nothing_ 19.01.2012

no przydatny plugin !
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 19.01.2012

Postaram się następną wersję dać za jakiś czas, aby dodać wiele nowego, oraz muszę wszystko dokładnie ztestować.
Odpowiedz

  • +
  • -
dasisdas - zdjęcie dasisdas 19.01.2012

Fajne,czekam na następną wersje:D
Odpowiedz

  • +
  • -
^Grzyboo - zdjęcie ^Grzyboo 19.01.2012

Zywy lampion - Uzyj 1000 razy latarki
Czy są jakieś zabezpieczenia?

Wystarczy zbindować latarkę pod backspace i osiągnięcie odblokowane po jednej rundzie :P
Odpowiedz