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
Dodatek

Forwardy pomocne przy operacjach na questachDo Questów z Diablo Mod by DarkGL ( by Fili:P )

dodatek forward pomocne questy darkgl diablo mod zadania

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
2 odpowiedzi w tym temacie

#1 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 12.12.2012 19:25

Wykrycie zakończenia zadania i możliwość zablokowania
Otwórz diablo_quest.sma.
Znajdź:
new questy_zabil[][]={
"Lowcy",
"Ninjow",
"Nekromantow",
"Magow",
"Zabojcow",
"Assasinow",
"Lowcow",
"Kaplanow",
"Diablow",
"Barbarzyncow",
"Paladynow",
"Aniolow",
"Paladynow",
"Barbarzyncow",
"Barbarzyncow"
}

I dodaj pod:
new g_Forward[ 3 ];

Następnie znajdź:
register_clcmd("say /quest","menu_questow")

I dodaj niżej to:
g_Forward[ 0 ] = CreateMultiForward("quest_complete", ET_CONTINUE, FP_CELL, FP_CELL);

Następnie znajdź:
client_print(iKiller,print_chat,"Wykonales zadanie %s gratulacje otrzymujesz %i expa!",questy_info[iQuest[iKiller]],questy[iQuest[iKiller]][2])
zapisz_questa(iKiller,iQuest[iKiller]);
diablo_give_xp( iKiller , questy[iQuest[iKiller]][2])
iQuest[ iKiller ] = 0;
zapisz_aktualny_quest(iKiller)

I zamień na to:
new iRet;
ExecuteForward( g_Forward, iRet, iKiller, iQuest[ iKiller ] );
if( !iRet )
return 0;
client_print(iKiller,print_chat,"Wykonales zadanie %s gratulacje otrzymujesz %i expa!",questy_info[iQuest[iKiller]],questy[iQuest[iKiller]][2])
zapisz_questa(iKiller,iQuest[iKiller]);
diablo_give_xp( iKiller , questy[iQuest[iKiller]][2])
iQuest[ iKiller ] = 0;
zapisz_aktualny_quest(iKiller)


Teraz w pluginie, w którym chcesz wykryć ukończenie questa na początku pod #include dodaj:
forward quest_complete( id, quest_id );

A później po prostu w tym forwardzie dla konkretnego questa sprawdzamy jego id. Jeżeli nie dodawałeś/usawałeś questów to id są od 1 do 15.

Zwróć 0, aby zatrzymać zdarzenie.
Zwróć dowolną wartość, aby kontynuować zdarzenie.


Wykrycie rozpoczęcia zadania i możliwość zablokowania
Znajdź:
register_clcmd("say /quest","menu_questow")

I dodaj pod:
g_Forward[ 1 ] = CreateMultiForward("quest_get", ET_CONTINUE, FP_CELL, FP_CELL);

Znajdź:
public menu_questow_handle2(id,menu,item){
if(item == MENU_EXIT){
menu_destroy(menu);
return PLUGIN_CONTINUE;
}

new access , callback;
new szInfo[ 128] , szName[ 128 ] , iLen;

menu_item_getinfo( menu , item , access , szInfo , charsmax( szInfo ) , szName, iLen , callback );

item = str_to_num( szInfo );

if(questy[item][3] && !(get_user_flags(id) & ADMIN_LEVEL_H)){
client_print(id,print_chat,"Ten quest jest tylko dla vipow!");
menu_destroy(menu);
menu_questow( id );
return PLUGIN_CONTINUE;
}
if(wczytaj_questa(id,item)){
client_print(id,print_chat,"Wykonales juz to zadanie!");
menu_destroy(menu);
menu_questow(id)
return PLUGIN_CONTINUE;
}
iQuest[id] = item;
iIle[id] = 0;

zapisz_aktualny_quest(id)
client_print(id,print_chat,"Wybrales zadanie: %s powodzenia !",questy_info[item] );

menu_destroy(menu);
return PLUGIN_CONTINUE;
}

I zamień na:
public menu_questow_handle2(id,menu,item){
if(item == MENU_EXIT){
menu_destroy(menu);
return PLUGIN_CONTINUE;
}

new access , callback;
new szInfo[ 128] , szName[ 128 ] , iLen;

menu_item_getinfo( menu , item , access , szInfo , charsmax( szInfo ) , szName, iLen , callback );

item = str_to_num( szInfo );

if(questy[item][3] && !(get_user_flags(id) & ADMIN_LEVEL_H)){
client_print(id,print_chat,"Ten quest jest tylko dla vipow!");
menu_destroy(menu);
menu_questow( id );
return PLUGIN_CONTINUE;
}
if(wczytaj_questa(id,item)){
client_print(id,print_chat,"Wykonales juz to zadanie!");
menu_destroy(menu);
menu_questow(id)
return PLUGIN_CONTINUE;
}
new iRet;
ExecuteForward( g_Forward[ 1 ], iRet, id, item );
if( !iRet )
return 0;
iQuest[id] = item;
iIle[id] = 0;

zapisz_aktualny_quest(id)
client_print(id,print_chat,"Wybrales zadanie: %s powodzenia !",questy_info[item] );

menu_destroy(menu);
return PLUGIN_CONTINUE;
}



Teraz w pluginie, w którym chcesz wykryć rozpoczęcie questa na początku pod #include dodaj:
forward quest_get( id, quest_id );

A później po prostu w tym forwardzie dla konkretnego questa sprawdzamy jego id. Jeżeli nie dodawałeś/usuwałeś questów to id są od 1 do 15.

Zwróć 0, aby zatrzymać zdarzenie.
Zwróć dowolną wartość, aby kontynuować zdarzenie.


Wykrycie postępu w zadaniu i możliwość zablokowania
Znajdź:
register_clcmd("say /quest","menu_questow")

Dodaj niżej:
g_Forward[ 2 ] = CreateMultiForward("quest_progress", ET_CONTINUE, FP_CELL, FP_CELL, FP_CELL)

Znajdź ( w funkcji diablo_death ):
iIle[iKiller]++;
zapisz_aktualny_quest(iKiller);

I zamień na:
new iReturn;
ExecuteForward( g_Forward, iReturn, iKiller, iQuest[ iKiller ], iIle[iKiller]+1 );
if( !iReturn )
return 0;
iIle[iKiller]++;
zapisz_aktualny_quest(iKiller);



Teraz w pluginie, w którym chcesz wykryć postęp questa na początku pod #include dodaj:
forward quest_progress( id, quest_id );

A później po prostu w tym forwardzie dla konkretnego questa sprawdzamy jego id. Jeżeli nie dodawałeś/usawałeś questów to id są od 1 do 15.

Zwróć 0, aby zatrzymać zdarzenie.
Zwróć dowolną wartość, aby kontynuować zdarzenie.


Mam nadzieję że poradnik się przyda, mi się przyda to pomyślałem że podzielę się z wami.
  • +
  • -
  • 3

#2 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 12.12.2012 19:50

Może kilku osobą się przyda, ale myślę, że jak ktoś umie używać forwardów to nawet umie je tworzyć ;)
:plus:
  • +
  • -
  • 0

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#3 Fili:P

    Godlike

  • Autor tematu
  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 12.12.2012 19:53

Może kilku osobą się przyda, ale myślę, że jak ktoś umie używać forwardów to nawet umie je tworzyć ;)
:plus:

E tam ja nauczyłem się forwardów dla systemu acziwmentów, kiedyś nie umiałem. Dzięki, będzie niedługo nowy plug do diablo dark.
  • +
  • -
  • 1





Również z jednym lub większą ilością słów kluczowych: dodatek, forward, pomocne, questy, darkgl, diablo, mod, zadania

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

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