Linux` Opublikowano Maj 19, 2016 o 13:40 Udostępnij Opublikowano Maj 19, 2016 o 13:40 (edytowane) W tym poradniku opiszę w jaki sposób dodać frakcję do nowego coda i to na aż dwa sposoby! [Sposob 1]: W pliku codmod.inc znajdujemy linijkę: native cod_register_class(const String:nazwa[], const String:opis[], const String:bronie[], inteligencja, zdrowie, obrazenia, wytrzymalosc, kondycja); zamieniamy ją na: native cod_register_class(const String:nazwa[], const String:opis[], const String:bronie[], inteligencja, zdrowie, obrazenia, wytrzymalosc, kondycja, const String:frakcja[]); Następnie otwieramy plik .sp naszego silnika i dodajemy nową zmienną globalną: new String:frakcje_klas[MAX_ILOSC_KLAS+1][64]; Teraz w kodzie szukamy public ZarejestrujKlase(Handle:plugin, numParams) i w środku zamieniamy: if(numParams != 8) na: if(numParams != 9) oraz za: kondycja_klas[ilosc_klas] = GetNativeCell(8); dodajemy: GetNativeString(9, frakcje_klas[ilosc_klas], sizeof(frakcje_klas[])); Jeszcze musimy przerobić wybór klas, więc szukamy public Action:WybierzKlaseMenu(client) i usuwamy calą jego zawartośc a w jego miejsce dodajemy: public Action:WybierzKlaseMenu(client) { new Handle:menu = CreateMenu(WybierzKlaseMenu_Handler); SetMenuTitle(menu, "Wybierz Frakcje:"); for(new i = 1; i <= ilosc_klas; i ++) { if(!StrEqual(frakcje_klas[i], "") && !is_in_previous(frakcje_klas[i], i)) AddMenuItem(menu, frakcje_klas[i], frakcje_klas[i]); } DisplayMenu(menu, client, 250); } public WybierzKlaseMenu_Handler(Handle:classhandle, MenuAction:action, client, position) { if(action == MenuAction_Select) { new String:item[64]; GetMenuItem(classhandle, position, item, sizeof(item)); position ++; new String:menu_item[128]; new String:numer_klasy[10]; new Handle:menu = CreateMenu(WybierzKlase_Handler); SetMenuTitle(menu, "Wybierz Klase:"); for(new i = 1; i <= ilosc_klas; i ++) { if(StrEqual(item, frakcje_klas[i])) { IntToString(i, numer_klasy, sizeof(numer_klasy)); Format(menu_item, sizeof(menu_item), "%s (Lv: %i)", nazwy_klas[i], poziom_klasy_gracza[client][i]); AddMenuItem(menu, numer_klasy, menu_item); } } DisplayMenu(menu, client, 250); } else if(action == MenuAction_End) CloseHandle(classhandle); } public bool:is_in_previous(const String:frakcja[], from) { for(new i = from - 1; i >= 1; i --) { if(StrEqual(frakcje_klas[i], frakcja)) return true; } return false; } Następnie szukamy public WybierzKlase_Handler(Handle:classhandle, MenuAction:action, client, position) i w środku zamieniamy: position ++; na: position = StringToInt(item); To będzie na tyle. A jak z dodawaniem nowych frakcji dla klas? Przy rejestracji nowej klasy przypisujemy frakcje dla klasy. [Sposob 2]: Otwieramy plik .sp naszego silnika i dodajemy nową zmienną globalną: new String:frakcje_klas[MAX_ILOSC_KLAS+1][64]; Następnie szukamy public OnMapStart() i do środka dodajemy: new String:file[256]; BuildPath(Path_SM, file, sizeof(file), "configs/frakcje.txt"); new Handle:kv = CreateKeyValues("Frakcje"); FileToKeyValues(kv, file); for(new i = 1; i <= ilosc_klas; i ++) { KvGetString(kv, nazwy_klas[i], frakcje_klas[i], sizeof(frakcje_klas[])); TrimString(frakcje_klas[i]); } CloseHandle(kv); Teraz w kodzie szukamy public ZarejestrujKlase(Handle:plugin, numParams) i za: kondycja_klas[ilosc_klas] = GetNativeCell(8); dodajemy: frakcje_klas[ilosc_klas] = ""; Jeszcze musimy przerobić wybór klas, więc szukamy public Action:WybierzKlaseMenu(client) i usuwamy calą jego zawartośc a w jego miejsce dodajemy: public Action:WybierzKlaseMenu(client) { new Handle:menu = CreateMenu(WybierzKlaseMenu_Handler); SetMenuTitle(menu, "Wybierz Frakcje:"); for(new i = 1; i <= ilosc_klas; i ++) { if(!StrEqual(frakcje_klas[i], "") && !is_in_previous(frakcje_klas[i], i)) AddMenuItem(menu, frakcje_klas[i], frakcje_klas[i]); } DisplayMenu(menu, client, 250); } public WybierzKlaseMenu_Handler(Handle:classhandle, MenuAction:action, client, position) { if(action == MenuAction_Select) { new String:item[64]; GetMenuItem(classhandle, position, item, sizeof(item)); position ++; new String:menu_item[128]; new String:numer_klasy[10]; new Handle:menu = CreateMenu(WybierzKlase_Handler); SetMenuTitle(menu, "Wybierz Klase:"); for(new i = 1; i <= ilosc_klas; i ++) { if(StrEqual(item, frakcje_klas[i])) { IntToString(i, numer_klasy, sizeof(numer_klasy)); Format(menu_item, sizeof(menu_item), "%s (Lv: %i)", nazwy_klas[i], poziom_klasy_gracza[client][i]); AddMenuItem(menu, numer_klasy, menu_item); } } DisplayMenu(menu, client, 250); } else if(action == MenuAction_End) CloseHandle(classhandle); } public bool:is_in_previous(const String:frakcja[], from) { for(new i = from - 1; i >= 1; i --) { if(StrEqual(frakcje_klas[i], frakcja)) return true; } return false; } Następnie szukamy public WybierzKlase_Handler(Handle:classhandle, MenuAction:action, client, position) i w środku zamieniamy: position ++; na: position = StringToInt(item); To będzie na tyle. A jak z dodawaniem nowych frakcji dla klas? Tworzymy w configs/ plik o nazwie frakcje.txt i dodajemy nowe klasy oraz frakcje według poniższego przykładu. "Frakcje" { "Snajper" "Polacy" "Komandos" "Polacy" "Obronca" "Rosjanie" "Medyk" "Niemcy" } Pierw musimy wpisać nazwę klasy a następnie jej frakcje. Silnik wraz z paczką modyfikacji, można nabyć wyłącznie poprzez kontakt ze mną. Więcej o tym w sygnaturze. Edytowane Maj 19, 2016 o 13:42 przez Linux` Call Of Duty Mod Nowy v1.1 CS:GO https://mygo.pl/topic/4986-call-of-duty-mod-nowy-v11/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się