←  Pluginy AMXX

AMXX.pl: Support AMX Mod X i SourceMod

»

Quests system(Misje, zadania)

  • +
  • -
Fili:P's Photo Fili:P 20.02.2012

Zadania aka Misje | Questy
by Fili:P

opis
Plugin, jest edytowanym systemem achów, dzięki niemu sami w prosty sposób możemy pisać questy na nasz serwer. Działa na zapisie nvault. Jest przeróbką mojego pluginu: amxx.pl/topic/71853-achievements/
Mam nadzieję że wam się spodoba. Nie będę go raczej rozwijał, jedynie naprawiał bugi jeżeli takowe zaistnieją i być może jeśli będę dysponował dobrym i pewnym zapisem sql to oczywiście dodam go do tego pluginu.

cvary
W tej wersji mamy do dyspozycji tylko 1 cvar:
quest_display_gz 1 // standardowo 1, czy ma wyświetlać informację o ukończeniu questa ? (1 tak, 0 nie)
quest_maxgot 2 // standardowo 2, ile mozna miec przyjetych questow na raz

//cvary do sql:
quest_sql_host "localhost" // host do bazy danych
quest_sql_login "root" // login do bazy danych
quest_sql_password "" // haslo do bazy danych
quest_sql_dbname "quests" // nazwa bazy danych

wymagane moduly
NVault lub SQLx
HamSandwich
ColorChat

Aby włączyć zapis SQL w lini 12 zamieniamy:
//#define SQL

Na:
#define SQL


Oraz kompilujemy ponownie.

komendy
say /quest
say_team /quest

Wyświetla menu główne questów.

Posted Image

native quest_get_progress(id, quest_id); // zwraca postep w zadaniu
native quest_get_status(id, quest_id); // zwraca czy zadanie zostalo ukonczone (1 lub 0)
native quest_get_name(quest_id, const var[], len); // zwraca nazwe zadania do tablicy (max. dlugosc nazwy: 31 znaków (32-1))
native quest_get_desc(quest_id, const var[], len); // zwraca opis zadania do tablicy (max. dlugosc opisu: 255 znaków (256-1))
native quest_get_target(quest_id); // zwraca cel zadania (liczbe int)
native quest_get_max(); // zwraca ilosc dodanych zadan
native quest_set_name(quest_id, const quest_name[]); // ustawia nazwe zadaniu
native quest_set_desc(quest_id, const quest_desc[]); // ustawia opis zadaniu
native quest_set_target(quest_id, quest_target); // ustawia cel zadania
native quest_set_progress(id, quest_id, value); // ustawia postep w zadaniu
native quest_set_status(id, quest_id, value); // ustawia czy zadanie jest ukonczone (1 lub 0)
native register_quest(const quest_name[], const quest_desc[], quest_target, const quest_reward[]); // rejestruje nowe zadanie
native quest_reset_status(id, quest_id); // resetuje postep w zadaniu
native quest_add_status(id, quest_id, value); // dodaje do obecnego postepu w zadaniu wartosc 3 argumentu


Posted Image
forward quest_give_reward(pid, qid);

Wywoływany w momencie zaliczenia misji, dzięki niemu możemy dawać nagrodę za wykonanie misji.

forward quest_user_accept(id, qid);

Wywoływany w momencie kiedy gracz przyjmuje zadanie

forward quest_user_abandon(id, qid);

Wywoływany w momencie kiedy gracz rezygnuje z zadania.

inne informacje
20 luty 2012r : Ideyntyfikator zadania to uchwyt od register_quest. Biblioteka z natywami nazywa się quests.

22 luty 2012r : Od wersji 1.1 możemy przyjmować zadania, rezygnować z nich oraz przeglądać zaliczone zadania. Planuję jeszcze max. 2 aktualizacje (PA i SQL). Według mnie pod względem wizualnym wygląda to nieźle. Pomysły na nowe forwardy i natywy mile widziane. Od teraz register_quest ma nowy arguent, jest to string, w którym wpisujemy nazwę nagrody, lecz samą nagrodę musimy dawać ręcznie w quest_give_reward.

23 luty 2012r : arex92 zmotywował mnie swoim komentarzem i od dnia dzisiejszego mamy do wyboru zapis sql lub nvault, webstats postaram się zrobić do końca tygodnia.

23 luty 2012r : zamieniłem ostatni argument natywu register_quest na niewymagany.

Tworzenie questów
Tutaj opiszę jak tworzymy nowe questy.
Na początku musimy zarejestrować quest najlepiej zrobić to w plugin_init.

new g_QuestHandle1;

public plugin_init()
{
// ...
g_QuestHandle1 = register_quest("Mój quest", "Opis questu", 12, "Nagroda za quest");
}

Zmienna g_QuestHandle1 jest uchwytem do naszego zadania.
Za pomocą funkcji register_quest dodajemy nowe zadanie. Jej pierwszy argument to nazwa zadania, drugi to opis zadania, trzeci to cel zadania, ostatni czwarty nie jest wymagany możemy go nie uwzględniać jest to nazwa nagrody za ukończenie zadania. W tym momencie zadanie jest niemożliwe do ukończenia. Teraz w odpowiednim momencie musimy zwiększać wartość stanu zadania za pomocą quest_add_status. Przykład:

quest_add_status(g_QuestHandle1, 1);


Rejestracja nagrody:

public quest_give_reward(id, qid)
{
if(qid==g_QuestHandle1 && id)
{
// tutaj dodajemy nagrodę za zadanie o id g_QuestHandle1
}
}


Przykładowe zadanie:
#include <amxmodx>
#include <quests>
#include <cstrike>
#include <hamsandwich>

new qHandle1;

public plugin_init(){
register_plugin("Przykladowy quest", "1.0", "Fili:P");
RegisterHam(Ham_TakeDamage, "player", "ham_td", 1);
qHandle1 = register_quest("Niszczyciel", "Zadaj 10000 obrazen wrogom", 10000, "1000$");
}
public ham_td(this, idinflict, idattacker, Float:damage, damagebits)
{
if(this == idattacker)
return 1;
if(get_user_team(this) == get_user_team(idattacker))
return 1;
if(!idattacker)
return 1;

quest_add_status(idattacker, qHandle1, floatround(damage));
return 1;
}
public quest_give_reward(id, qid)
{
if(qid == qHandle1 && id)
cs_set_user_money(id, cs_get_user_money(id)+1000, 1);
}


Zakazuje kopiowania treści na inne witryny bez mojej zgody!


download
Attached File  quests.amxx   21.14KB   7 downloads
Attached File  quests.sma   21.81KB   888 downloads
Attached File  quests.inc   1.15KB   677 downloads
Quote

Kamil17's Photo Kamil17 20.02.2012

@ UP Pytanie mam , a czy można zastosować to żeby zrobić takie questy ? w tym temacie masz ss'y http://amxx.pl/topic...nowych-questow/
Quote

  • +
  • -
Fili:P's Photo Fili:P 20.02.2012

to są takie questy, których nie trzeba brać
Quote

  • +
  • -
ToRRent's Photo ToRRent 20.02.2012

to czym różnią się achy od questów ?
Quote

  • +
  • -
Fili:P's Photo Fili:P 20.02.2012

Hmm trafna uwaga, szykuje spory update co do pluginu
Quote

Kamil17's Photo Kamil17 20.02.2012

to są takie questy, których nie trzeba brać

Powiesz mi jak dodać takie questy ? Na PW ? czy nawet tutaj Bardzo pilne ;)
Quote

  • +
  • -
Fili:P's Photo Fili:P 20.02.2012

Sa opisane natywy i forwardy w 1 poscie, w nastepnej wersji bd latwiej wszystko robic, proszę o cierpliwosc ;]
Quote

Kamil17's Photo Kamil17 20.02.2012

Sa opisane natywy i forwardy w 1 poscie, w nastepnej wersji bd latwiej wszystko robic, proszę o cierpliwosc ;]

Ostatnie pytanie . Podjął byś się napisania tych questów do DiabloModa ?
Quote

  • +
  • -
Fili:P's Photo Fili:P 20.02.2012

Sa opisane natywy i forwardy w 1 poscie, w nastepnej wersji bd latwiej wszystko robic, proszę o cierpliwosc ;]

Ostatnie pytanie . Podjął byś się napisania tych questów do DiabloModa ?

Podejme sie kiedy skoncze te ostatecznie ;]
Quote

  • +
  • -
mastah1771's Photo mastah1771 20.02.2012

fajnie jakbyś zrobił statystki WWW .
Quote

Arex's Photo Arex 20.02.2012

Tak ale Fili nie ogarnia sql
Quote

  • +
  • -
Fili:P's Photo Fili:P 22.02.2012

Update 1.1:
  • Nowy argument "Nagroda" w natywie register_quest
  • Duża zmiana w menu
  • Nowy element w zapisie "Czy gracz przyjął zadanie ?"
Quote

  • +
  • -
Fili:P's Photo Fili:P 23.02.2012

Tak ale Fili nie ogarnia sql

Zapis SQL dodany :]
Quote

  • +
  • -
phoeniX's Photo phoeniX 23.02.2012

Fajny, fajny.. :)
Dodaj ss'y jak możesz. ;)
Quote

Arex's Photo Arex 23.02.2012

23 luty 2012r : arex92 zmotywował mnie swoim komentarzem i od dnia dzisiejszego mamy do wyboru zapis sql lub nvault, webstats postaram się zrobić do końca tygodnia.


hehehe bardzo dziekuje
Quote

  • +
  • -
Fili:P's Photo Fili:P 24.02.2012

1. Chcecie poradnik i przykłady tworzenia questow ?
2. Chcecie support z cod modem, czyli questy od lvlu lub dla konkretnej klasy ?
Quote

  • +
  • -
Anonimowy*BB*'s Photo Anonimowy*BB* 24.02.2012

1. Chcecie poradnik i przykłady tworzenia questow ?
2.Nie zbytnio.
Wiesz co fajnie by było że za zadania jest exp pod pasowany do skill moda do BB.
Quote

Kamil17's Photo Kamil17 24.02.2012

1. Chcecie poradnik i przykłady tworzenia questow ?
2. Chcecie support z cod modem, czyli questy od lvlu lub dla konkretnej klasy ?

Czy byś zrobił te questy do Diablomoda co podałem wyżej ?? Proszę :D
Quote

  • +
  • -
Fili:P's Photo Fili:P 24.02.2012

1. Chcecie poradnik i przykłady tworzenia questow ?
2.Nie zbytnio.
Wiesz co fajnie by było że za zadania jest exp pod pasowany do skill moda do BB.

Możesz posłużyć się forwardem quest_give_reward, aby dać graczowi nagrodę, np. exp do skill moda na bb

1. Chcecie poradnik i przykłady tworzenia questow ?
2. Chcecie support z cod modem, czyli questy od lvlu lub dla konkretnej klasy ?

Czy byś zrobił te questy do Diablomoda co podałem wyżej ?? Proszę :D

Dorób do diablo natyw, który powiększa exp i poźniej w forwardzie quest_give_reward używaj natywu, aby dać nagrodę.
Quote

Kamil17's Photo Kamil17 24.02.2012

Dorób do diablo natyw, który powiększa exp i poźniej w forwardzie quest_give_reward używaj natywu, aby dać nagrodę.


@ Ja się nie znam na robieniu Questów i dlatego proszę znawce :) Czyli ciebie filip Help Please Me :)
Quote