←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Questy do Nowego Cod'a

  • +
  • -
Muzzi - zdjęcie Muzzi 11.09.2011

Questy do Nowego Cod'a

by Muzzi Ver. 1.0


Jest to przerobiony plugin DarkGL'a questy do diablo, przerobiłem to aby działało pod Cod'a Nowego. Jeżeli widzicie jakieś błędy pisać w temacie.


Dołączona grafika

Aby dodać questy wystarczy tak jak tutaj poniżej.

Tutaj dodajemy Przedziały levelowe.

new const przedzial[][] =
{
{1,50},
{51,100},
{101,200},
{201,401}
}



Tutaj wpisujemy opis questa.
Pierwszy przykład
{ przedział levelowy, ile musisz zabić, "jaką klase musisz zabić", "ile dostaniesz expa" }


new const SpisQuest[][] =
{
{1,2,"Komandos","300"},
{2,5,"Snajper","400"},
{3,8,"Obronca","650"}
}



No i pozostały informacje co i jak.
Co zabijamy i jaka nagroda.

new const QuestyInfo[][] =
{
"Zabij 2 Komandosow",
"Zabij 5 Snajperow",
"Zabij 8 Obroncow"
}

new const QuestyInfoExp[][] =
{
"(Nagroda 300 doswiadczenia)",
"(Nagroda 400 doswiadczenia)",
"(Nagroda 650 doswiadczenia)"
}



Dodatkowo w kodzie, można zmienić prefix przed menu, [NazwaSieci.pl].
Mam nadzieje, iż nie namieszałem tak strasznie ;)
Plugin wystarczy wgrać na serwer i dodać plugin pod pluginem CODMod.


Dołączona grafika

Wymagane dodatkowe Moduły:
#include <ColorChat>
#include <codmod>




Jeżeli zobaczycie jakieś błędy pisać, postaram się naprawić to co nie działa.
Plugin został napisany od razu po udostępnieniu questów darkgl'a lecz niestety nie był publikowany.
Mam nadzieję iż nie ma aż tak strasznie rażących błędów ;)

Załączone pliki


Użytkownik Muzzi edytował ten post 11.09.2011 20:18
Odpowiedz

Dr. Weed - zdjęcie Dr. Weed 11.09.2011

sciagne dodam jakies questy i sprawdze jak smiga :)
Odpowiedz

  • +
  • -
Muzzi - zdjęcie Muzzi 11.09.2011

[size=4]Jest to przerobiony plugin DarkGL'a questy do diablo, przerobiłem to aby działało pod Cod'a Nowego[/size]
Plugin został napisany od razu po udostępnieniu quest&#243;w darkgl'a lecz niestety nie był publikowany.

To nie jest to samo co dałeś.
Jest to przeróbka kodu Dark'a
Odpowiedz

  • +
  • -
radim - zdjęcie radim 12.09.2011

Dark potrafię czytać ;P
Muzzi, ale po co drugie questy, skoro już są do coda xD
Odpowiedz

  • +
  • -
Na 5tyk - zdjęcie Na 5tyk 12.09.2011

Questy darka są lepsze bo:
- zapisują się,
- jest przedział poziomów,
- łatwe dodanie dodatkowych questów.

To chyba na tyle.
Odpowiedz

  • +
  • -
JawoR1337 - zdjęcie JawoR1337 12.09.2011

Ładnie + !
Odpowiedz

  • +
  • -
Muzzi - zdjęcie Muzzi 12.09.2011

Questy darka są lepsze bo:
- zapisują się,
- jest przedział poziomów,
- łatwe dodanie dodatkowych questów.

To chyba na tyle.


Chłopczę, questy Darka są do diablo moda, ja je przerobiłem tak aby działały do Cod moda, plus dodałem takie menu od siebie :)
Odpowiedz

  • +
  • -
Na 5tyk - zdjęcie Na 5tyk 12.09.2011

Właśnie wiem. Ale on się pytał po co 2 Questy no to mu napisałem dlaczego są lepsze :)
Odpowiedz

  • +
  • -
ToRRent - zdjęcie ToRRent 14.09.2011

Szkoda ze nie ma żadnego urozmaicenia :)
Odpowiedz

  • +
  • -
Ciuchcia:D - zdjęcie Ciuchcia:D 16.09.2011

Szkoda ze jeszcze nie zostalo upublikowane do coda starego :(
Odpowiedz

  • +
  • -
A może sma? - zdjęcie A może sma? 17.09.2011

Przepraszam, że zapytam... To działa w ogóle O.o?
Po wybraniu jakiegoś questu menu już się nie otwiera...
Po zabiciu klasy np. Snajper nalicza poprawnie. Jednak warunek sprawdzający czy zadanie zostało wypełnione również nie działa... Po prostu licznik leci dalej po zabiciu wymaganej liczby osób...
Odpowiedz

  • +
  • -
radim - zdjęcie radim 17.09.2011

A może sma, menu nie wyświetla się dopóki nie wypełnisz obecnej misji lub nie napiszesz /resetquesty - tak na diablo było.
Odpowiedz

  • +
  • -
A może sma? - zdjęcie A może sma? 17.09.2011

Noo doobra, ale nalicza wam i rozdaje nagrody poprawnie...?
Odpowiedz

  • +
  • -
radim - zdjęcie radim 17.09.2011

Szczerzę mówiąc nie próbowałem, ale zaraz spróbuję.
Odpowiedz

  • +
  • -
Muzzi - zdjęcie Muzzi 18.09.2011

Yyy. Musi to działać, testowane na serwerze zanim to wypuściłem w sieć. Menu powinno się otwierać za każdym razem, gdy wpiszecie komende.
Odpowiedz

  • +
  • -
radim - zdjęcie radim 18.09.2011

Menu powinno się otwierać za każdym razem, gdy wpiszecie komende.

Powinno, ale nie musi.. W diablo jest tak, że menu się nie otwiera dopóki nie wykonasz obecnego questa
Odpowiedz

  • +
  • -
Kaleka - zdjęcie Kaleka 13.11.2011

Jak zrobić misję np
Zabij 10 snajperów lub komandosów?
Żeby za zabicie snajpera lub komandosa zaliczało jeden punkt?
Odpowiedz

  • +
  • -
Denox - zdjęcie Denox 23.12.2011

[b]
[/b]Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team

cod_questy.sma(17) : error 001: expected token: "}", but found "{"
cod_questy.sma(26) : error 001: expected token: "}", but found "{"
cod_questy.sma(35) : error 001: expected token: "}", but found "-string-"
cod_questy.sma(44) : error 001: expected token: "}", but found "-string-"
error przy kompilacji a to moj sma (poczaek bo tyle edytowalem)
#include <amxmodx>
#include <codmod>
#include <nvault>
#include <colorchat>

#define PLUGIN "[COD] Questy"
#define VERSION "1.0"
#define AUTHOR "DarkGL edited by Muzzi"

new const prefix[] = "[Questy]";

new const przedzial[][] =
{
    {1,20},
    {21,40},
    {41,100}
    {101,150}
    {151,200}
}

new const SpisQuest[][] =
{
    {20,13,"Komandos","3000"},
    {70,20,"Majestick","40000"},
    {100,33,"Policjant","650000"}
    {150,50,"Night Zoomer(Klasa Vip)","900000"
    {180,30,"Rambo(Klasa Premium)","1000000"
}

new const QuestyInfo[][] =
{
    "Zabij 13 Komandosow",
    "Zabij 20 Majestikow",
    "Zabij 33 Policjantow"
    "Zabij 50 Night Zoomer'ow (Klasa Vip)"
    "Zabij 30 Rambo (Klasa Premium)"
}

new const QuestyInfoExp[][] =
{
    "(Nagroda 3000 doswiadczenia)",
    "(Nagroda 40000 doswiadczenia)",
    "(Nagroda 650000 doswiadczenia)"
    "(Nagroda 900000 doswiadczenia)"
    "(Nagroda 1000000 doswiadczenia)"
}

new     prze_wybrany[33],
    vault_questy,

Przepraszam za bład i spam to jest moj co_questy.sma mam tez zalacznik a klasy na serwie to
Majestic
Pilicjant
Komandos
NightZoomen (Klasa Vip)
Rambo (Klasa Premium)

[tylko te do questow
#include <amxmodx>
#include <codmod>
#include <nvault>
#include <colorchat>

#define PLUGIN "[COD] Questy"
#define VERSION "1.0"
#define AUTHOR "DarkGL edited by Muzzi"

new const prefix[] = "[Questy]";

new const przedzial[][] =
{
    {1,20},
    {21,40},
    {41,100}
    {101,150}
    {151,200}
}

new const SpisQuest[][] =
{
    {20,13,"Komandos","3000"},
    {70,20,"Majestick","40000"},
    {100,33,"Policjant","650000"}
    {150,50,"Night Zoomen (Klasa Vip)","900000"
    {180,30,"Rambo (Klasa Premium)","1000000"
}

new const QuestyInfo[][] =
{
    "Zabij 13 Komandosow",
    "Zabij 20 Majestikow",
    "Zabij 33 Policjantow"
    "Zabij 50 Night Zoomen'ow (Klasa Vip)"
    "Zabij 30 Rambo (Klasa Premium)"
}

new const QuestyInfoExp[][] =
{
    "(Nagroda 3000 doswiadczenia)",
    "(Nagroda 40000 doswiadczenia)",
    "(Nagroda 650000 doswiadczenia)"
    "(Nagroda 900000 doswiadczenia)"
    "(Nagroda 1000000 doswiadczenia)"
}

new     prze_wybrany[33],
    vault_questy,
    vault_questy2,
    quest_gracza[33],
    ile_juz[33],
    klasa[33][64];

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_event("DeathMsg", "DeathMsg", "a");
    register_clcmd("say /quest","cmdMenuQuest");
    
    vault_questy = nvault_open("Questy");
    vault_questy2 = nvault_open("Questy2");
}

public cod_class_changed(id, klasa)
{
    quest_gracza[id] = wczytaj_aktualny_quest(id)
}

public client_disconnect(id) zapisz_questa(id,quest_gracza[id],"1")

public plugin_end()
{
    nvault_close(vault_questy);
    nvault_close(vault_questy2);
}
public cmdMenuQuest(id){
    
    if(quest_gracza[id] == -1 || quest_gracza[id] == -2)
    {
        new menu = menu_create("^n^n\y[NazwaSieci.pl] \wMenu Questow^n\dby \rMuzzi\d^n^n\yAktualny Quest: \wBrak","handle_cmdMenuQuest");
        menu_additem(menu,"Wybierz Quest","0");
        menu_additem(menu,"Resuj Questy \y[\rWszystkie!\y]","3");
        menu_display(id,menu);
    }
    else
    {
        new formats[256];
        format(formats,charsmax(formats),"^n^n^n\y[NazwaSieci.pl] \wMenu Questow^n\dby \rMuzzi^n^n\yAktualny Quest: \w%s^n\rStatus:\w %d/%d^n\y%s",QuestyInfo[quest_gracza[id]],ile_juz[id],SpisQuest[quest_gracza[id]][1],QuestyInfoExp[id]);
        new menu = menu_create(formats,"handle_cmdMenuQuest");
        menu_additem(menu,"\dWybierz Quest","2");
        menu_additem(menu,"\wAnuluj Quest","1");
        menu_display(id,menu);
    }
}

public handle_cmdMenuQuest(id,menu,item){
    if(item==MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    new data[6], iName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
    new key = str_to_num(data);
    switch(key)
    {
        case 0: cmdQuest(id)
        case 1:{
            
            zapisz_questa(id,quest_gracza[id],"0")
            quest_gracza[id] = -1;
            zapisz_aktualny_quest(id)
        }
        case 2:{
            ColorChat(id,GREY,"%s Niestety, posiadasz aktualnie Questa",prefix);
            return PLUGIN_HANDLED;
        }
        case 3: resetquesty(id)        
    }
    return PLUGIN_HANDLED;
}
public cmdQuest(id){
    if(quest_gracza[id] == -1 || quest_gracza[id] == -2)
    {            
        new formats[512];
        format(formats,charsmax(formats),"^n^n\y[NazwaSieci.pl] \wWybierz Quest\d");
        new menu = menu_create(formats,"handle_cmdQuest");
        for(new i=0; i<sizeof przedzial; i++)
        {
            format(formats,charsmax(formats),"Questy od \r%d \wdo \r%d",przedzial[i][0],przedzial[i][1]);
            menu_additem(menu, formats);
        }    
        menu_display(id,menu);
    }
    else
    {
        ColorChat(id,GREY,"%s Wykonaj najpierw poprzednie zadanie",prefix)
    }
    return PLUGIN_CONTINUE;
}
public handle_cmdQuest(id,menu,item){
    if(item == MENU_EXIT){
        menu_destroy(menu);
        return PLUGIN_CONTINUE;
    }
    if(cod_get_user_level(id) < przedzial[item][0])
    {
        ColorChat(id,GREY,"%s Masz za maly level!",prefix);
        cmdQuest(id)
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    new formats[512]
    formatex(formats,charsmax(formats),"^n^n\y[NazwaSieci.pl] \wWybierz Quest^n\dZadania od %d do %d poziomu",przedzial[item][0],przedzial[item][1]);
    new menu = menu_create(formats,"handle_handle_cmdQuest")
    for(new i=0; i<sizeof SpisQuest; i++)
    {
        if(SpisQuest[i][0] == item+1){
            formatex(formats,charsmax(formats),"\w%s \r%s",QuestyInfo[i],QuestyInfoExp[i]);
            menu_additem(menu,formats);
        }
    }
    prze_wybrany[id] = item+1;
    menu_display(id,menu);
    return PLUGIN_CONTINUE;
}
public handle_handle_cmdQuest(id,menu,item){
    if(item == MENU_EXIT){
        menu_destroy(menu);
        return PLUGIN_CONTINUE;
    }
    new ile2 = 0;
    for(new i = 0;i<sizeof(SpisQuest);i++){
        if(SpisQuest[i][0] != prze_wybrany[id]){
            continue;
        }
        if(ile2 == item){
            item = i;
            break;
        }
        ile2++;
    }
    if(wczytaj_questa(id,item)){
        ColorChat(id,GREY,"%s Wykonales juz to zadanie!",prefix);
        cmdQuest(id)
        menu_destroy(menu);
        return PLUGIN_CONTINUE;
    }
    quest_gracza[id] = item;
    ile_juz[id] = 0
    zapisz_aktualny_quest(id)
    ColorChat(id,GREY,"%s Wybrales quest: %s  %s powodzenia !",prefix,QuestyInfo[item],QuestyInfoExp[item]);
    quest_gracza[id] = wczytaj_aktualny_quest(id);
    menu_destroy(menu);
    return PLUGIN_CONTINUE;
}
public DeathMsg(){
    new attacker     = read_data(1);
    new victim     = read_data(2);
    if(quest_gracza[attacker] != -1)
    {
        if(attacker == victim) return PLUGIN_HANDLED;
        
        cod_get_class_name(cod_get_user_class(victim), klasa[victim], charsmax(klasa));
        if(klasa[victim][0] == SpisQuest[quest_gracza[attacker]][2]){
            ile_juz[attacker]++;
            zapisz_aktualny_quest(attacker)
        }
        if(ile_juz[attacker] == SpisQuest[quest_gracza[attacker]][1]){
            ColorChat(attacker,GREY,"%s Wykonales zadanie %s gratulacje otrzymujesz %s expa!",prefix,QuestyInfo[quest_gracza[attacker]],QuestyInfoExp[attacker])
            zapisz_questa(attacker,quest_gracza[attacker],"1")
            cod_set_user_xp(attacker,cod_get_user_xp(attacker) + SpisQuest[quest_gracza[attacker]][3]);
            quest_gracza[attacker] = -1;
            zapisz_aktualny_quest(attacker)
        }
        else
        {
            ColorChat(attacker,GREY,"%s Zabiles %i/%i %s",prefix,ile_juz[attacker],SpisQuest[quest_gracza[attacker]][1],SpisQuest[quest_gracza[attacker]][2])
        }
    }
    return PLUGIN_CONTINUE;
}
public zapisz_questa(id,quest,value[])
{
    new name[64];
    get_user_name(id,name,63)
    strtolower(name)
    new key[64];
    format(key,63,"questy-%i-%s-%i",klasa[id],name,quest);
    nvault_set(vault_questy,key,value);
}

public zapisz_aktualny_quest(id){
    new name[64];
    get_user_name(id,name,63)
    strtolower(name)
    new key[256];
    format(key,255,"questy-%d-%s",klasa[id],name);
    new data[32]
    formatex(data,charsmax(data),"#%d#%d",quest_gracza[id]+1,ile_juz[id]);
    nvault_set(vault_questy2,key,data);
}

public wczytaj_aktualny_quest(id){
    new name[64];
    get_user_name(id,name,63)
    strtolower(name)
    new key[256];
    format(key,255,"questy-%d-%s",klasa[id],name);
    new data[32];
    nvault_get(vault_questy2,key,data,31);
    replace_all(data,31,"#"," ");
    new questt[32],ile[32]
    parse(data,questt,31,ile,31)
    ile_juz[id] = str_to_num(ile)
    return str_to_num(questt)-1
}

public wczytaj_questa(id,quest){
    new name[64];
    get_user_name(id,name,63)
    strtolower(name)
    new key[64];
    format(key,63,"questy-%i-%s-%i",klasa[id],name,quest);
    new data[64];
    nvault_get(vault_questy,key,data,63);
    return str_to_num(data);
}
public resetquesty(id)
{
    new menu = menu_create("Czy na pewno chcesz usunac Wszystkie Zapisane Questy?","handle_resetquesty");
    menu_additem(menu,"Tak, Chce wykasowac wszystkie Questy!","0");
    menu_additem(menu,"Nie, Nie chce nic kasowac!","1");
    menu_display(id,menu);
}
public handle_resetquesty(id,menu,item){
    if(item==MENU_EXIT)
    {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    new data[6], iName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
    new key = str_to_num(data);
    switch(key)
    {    
        case 0:{
            for(new i=0;i<sizeof SpisQuest;i++)
            {
                zapisz_questa(id,i,"0")
            }
            quest_gracza[id] = -1;
            zapisz_aktualny_quest(id)
        }
        case 1: ColorChat(id,GREY,"%s Nie baw sie <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' />",prefix);
    }
    return PLUGIN_CONTINUE;
}

Odpowiedz

  • +
  • -
Haliax - zdjęcie Haliax 24.12.2011

Przepraszam ze zapytam, to dziala czy nie?
Ponieważ niewiem czy opłaca się wgrywać, a widzę że niektórzy mają z tym problemy.
Odpowiedz