←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Stary
Dodawanie frakcji

  • +
  • -
Lopez. - zdjęcie Lopez. 20.12.2010

Pierwsze co robimy to dodajemy nową tablicę np. pod:
new const nazwy_klas[][] = {"Brak",
        "Snajper",
        "Komandos",
        "Strzelec wyborowy",
        "Obronca",
        "Medyk",
        "Wsparcie ogniowe",
        "Saper",
        "Demolitions",
        "Rusher",
        "Rambo (Klasa Premium)"
};

dodajemy

new const frakcje[][]={
        "Brak",
        "Polacy",
        "Rosjanie"
}


zawsze pierwsze musi być Brak potem po przecinkach podajemy nazwy frakcji po ostaniej frakcji przecinka nie ma ilość jest dowolna ale nie przesadzajmy bo potem będzie dużo roboty ;)

dobrze idziemy dalej

dodajemy

enum { NONE = 0,polacy,rosjanie}


dodajemy tablice :

new const nalezy_do[]={
        NONE,
        polacy,
        rosjanie,
        polacy,
        rosjanie,
        polacy,
        polacy,
        rosjanie,
        polacy,
        polacy,
        rosjanie
}

to tutaj ustalamy do której frakcji należy klasa i tak w tym przykładzie Snajper należy do polaków a Komandos do Rosjan

Następnie musimy podmienić funkcje

public WybierzKlase(id)


na tą
public WybierzKlase(id)
{
        new menu = menu_create("Wybierz frakcje:", "Wybierzfrakcje_Handle");
        for(new i = 1;i<sizeof(frakcje);i++){
                menu_additem(menu, frakcje[i]);
        }
        menu_display(id, menu);
}

i dodać tą

public Wybierzfrakcje_Handle(id, menu2, item)
{       
        if(item == MENU_EXIT)
        {
                menu_destroy(menu2);
                return PLUGIN_CONTINUE;
        }       

        item++;
        frakcja_gracza[id] = item;
        new menu = menu_create("Wybierz klase:", "WybierzKlase_Handle");
        new klasa[50];
        for(new i=1; i<sizeof nazwy_klas; i++)
        {
                if(nalezy_do[i] == item){
                        WczytajDane(id, i);
                        format(klasa, 49, "%s \yPoziom: %i", nazwy_klas[i], poziom_gracza[id]);
                        menu_additem(menu, klasa);
                }
        }
       
        WczytajDane(id, klasa_gracza[id]);
       
        menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
        menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
        menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
        menu_display(id, menu);
       
        client_cmd(id, "spk QTM_CodMod/select");
        #if defined BOTY
        if(is_user_bot2(id))
                WybierzKlase_Handle(id, menu, random(sizeof nazwy_klas-1));
        #endif
       
        return PLUGIN_CONTINUE;
}

w zmiennych globalnych musimy jeszcze dodać

new frakcja_gracza[33]

możemy pod np new const nalezy_do :)

i na koniec musimy podmienić

WybierzKlase_Handle(id, menu, item)

na

public WybierzKlase_Handle(id, menu, item)
{
        client_cmd(id, "spk QTM_CodMod/select");
       
        if(item == MENU_EXIT)
        {
                menu_destroy(menu);
                return PLUGIN_CONTINUE;
        }       
       
        item++;
       
        new ile = 0;
        for(new i=1; i<sizeof nazwy_klas; i++)
        {
                if(nalezy_do[i] == frakcja_gracza[id]){
                        ile++;
                }
                if(ile == item){
                        item = i;
                        break;
                }
        }
       
       
        if(item == klasa_gracza[id])
                return PLUGIN_CONTINUE;
       
        if(item == Rambo && !(get_user_flags(id) & ADMIN_LEVEL_H))
        {
                client_print(id, print_chat, "[COD:MW] Nie masz uprawnien aby kozystac z klasy premium.");
                WybierzKlase(id);
                return PLUGIN_CONTINUE;
        }
       
        if(klasa_gracza[id])
        {
                nowa_klasa_gracza[id] = item;
                client_print(id, print_chat, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
        }
        else
        {
                klasa_gracza[id] = item;
                WczytajDane(id, klasa_gracza[id]);
                Odrodzenie(id);
        }
        return PLUGIN_CONTINUE;
}

no i kompilujemy i praca skończona ;)

źródło : www.darkgl.amxx.pl

[uwaga=DarkGL]Drobna poprawka[/uwaga]
Odpowiedz

  • +
  • -
Rahmir - zdjęcie Rahmir 20.12.2010

No w końcu ktoś to napisał ;).
Obecnie tego nie potrzebuję, ale w przyszłości na 100 pro będę i zakończyłeś spam na forum z tymi frakcjami "jak" "kto ma" itd ;).
Leci plus :D
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 20.12.2010

gdzieś tu był błąd ;d
Odpowiedz

kamiloo2 - zdjęcie kamiloo2 21.12.2010

to moj poradnik ;/ ja go dodalem ktos go usunoł i on go dodal ;/ zal mi was jak ja dodalem to juz usowacie ale jak on to nie

Dodano 21 grudzień 2010 - 10:49:
a bład jest przy: wczytaj dane
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 21.12.2010

nie to nie jest twój poradnik
Odpowiedz

kamiloo2 - zdjęcie kamiloo2 21.12.2010

wiem twoj, ale ja go dodalem ;/ a on go skopiowal odemnie ;/

Dodano 23 grudzień 2010 - 09:24:
naprawi ktos ten blad z wczytaj dane
?
Odpowiedz

  • +
  • -
Barts - zdjęcie Barts 28.12.2010

Naprawi ktoś to?
Bo jak wrzuciłem na serwer to nie działają magiczne rzeczy np. miny, rakiety i dynamity.
Odpowiedz

  • +
  • -
PtasiorEx - zdjęcie PtasiorEx 30.12.2010

Eej darkgl miał na swojej stronie sma mógł by ktoś dać?
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 30.12.2010

poradnik poprawiony
Odpowiedz

  • +
  • -
PtasiorEx - zdjęcie PtasiorEx 30.12.2010

@up dasz sma?
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 30.12.2010

nie
Odpowiedz

  • +
  • -
efee - zdjęcie efee 02.01.2011

A jak dodac do kogo nalezy pod klasa ?
Użytkownik efee edytował ten post 02.01.2011 12:55
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 02.01.2011

czyli np
Snajper | Polacy tak ?
Odpowiedz

  • +
  • -
Droso - zdjęcie Droso 07.01.2011

Mam problem mam 3 frakcje Polacy Taliby i Premium wszystko zrobilem skompilowało się ale gdy w grze wybieram frakcje (już słychać że się klasa wybrała i piszę) wybieram klasę jaką chcę np. Komandos . Wpisuje kill i mam inną klasę o co cho?
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 07.01.2011

ok poprawione
Odpowiedz

  • +
  • -
efee - zdjęcie efee 08.01.2011

ShowSyncHudMsg(id, SyncHudObj, "Klasa : %s^nDoswiadczenie : %i / %i^nPoziom : %i^nPrzedmiot : %s", nazwy_klas[klasa_gracza[target]], doswiadczenie_gracza[target], doswiadczenie_poziomu[poziom_gracza[target]], poziom_gracza[target], nazwy_przedmiotow[informacje_przedmiotu_gracza[target][0]]);
tutaj zeby pisalo do kogo nalezy
Odpowiedz

  • +
  • -
Droso - zdjęcie Droso 08.01.2011

Dziex za poprawienie
Odpowiedz

  • +
  • -
Aqvis - zdjęcie Aqvis 24.01.2011

działa frakcja dla komendy /klasa
ale jak zrobić żeby tak samo to wyglądało dla komendy /klasy, która opisuje klasy?
Odpowiedz

  • +
  • -
Sevox - zdjęcie Sevox 26.01.2011

Da ktoś .sma jak to powinno wyglądac? Bo strasznie nie jasno napisany ten poradnik : /
Odpowiedz

  • +
  • -
Emixx. - zdjęcie Emixx. 26.01.2011

Da ktoś .sma jak to powinno wyglądac? Bo strasznie nie jasno napisany ten poradnik : /


Wszystko jest pięknie opisane.
Nie rozumem twoich pretensji.

Jakbyś chociaż troszke ruszył główką, to już byś miał te frakcje, zamiast upraszać się innych ;]
Odpowiedz