
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.

Standardowa.

Nvault,
HamSandwich,
Colorchat.

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

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 ).

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.

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

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ą.

- 1.0.0
- 1.0.0b łatka i dodanie kilku achów
Dodanie kilku achów
- 1.0.1
Możliwość dostawania w nagrodę za ukończenie acha xp-a w nowym cod modzie
Łatka [dzięki torrent]
- 1.0.1b
Naprawa acha "Żywy lampion"
Naprawa acha "Pan śmierci"
Nowy cvar
Forward wywoływany podczas otrzymania acha ( nie testowany )
- 1.0.1c
- 1.0.2
Dodanie forwardu
- 1.1.0
Dodanie natywów
Usunięcie achów, ponieważ możemy je tworzyć sami jak klasy do coda
- 1.1.1
Dodanie 3 nowych forwardów.
Usunięcie kilku zbędnych natywów.

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!

Wersja 1.1.0:



Wersja 1.1.1:


