←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Frakcje na Cod Modzie

Mateos's Photo Mateos 05.04.2013

Witam !
Mam jakiś problem ... Zadnych errorów nie ma ani nic. Wgrywam frakcje i jest tylko frakcja "Zwykla".
Zapodaje QTM_CodMod.sma oraz cod_frakcje.ini

Attached Files

Quote

  • +
  • -
Guzik's Photo Guzik 05.04.2013

Czy masz kopie sma silnika sprzed dodaniem tych frakcji? Spróbowałbym sam je dodać, a tak to nie chce mi się usuwać itp tego wszystkiego. :/
Quote

Mateos's Photo Mateos 05.04.2013

Tak mam.To jest gotowiec od DarkGL.
No chyba ,że chcesz silnik bez żadnych dodatków od frakcji.Tak to trzeba by było dawać od nowa all.

Attached Files


Edited by mateusztb, 05.04.2013 17:27.
Quote

  • +
  • -
Guzik's Photo Guzik 05.04.2013

Aaahhh, gotowiec.
Spróbuj tego na silniku bez żadnych frakcji:


1.Edytujemy plik QTM_CodMod.sma
W zmiennych globalnych dodajemy:

#define MAX_WIELKOSC_FRAKCJA 64
new frakcja_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_FRAKCJA+1];
new nazwa_klasy[MAX_ILOSC_KLAS+1][64];
new nazwa_frakcji[MAX_ILOSC_KLAS+1][64];
new klasid;


Szukamy funkcji public plugin_init() i dodajemy na końcu jego:

loadfile()



Czyli tak powinno wyglądać:

public plugin_init()
{
//kod
loadfile()
}



Szukamy funkcji public plugin_init() i dodajemy za nią:

public loadfile()
{
new file[256];
get_configsdir(file,charsmax(file));
formatex(file, charsmax(file), "%s/cod_frakcje.ini", file);

if(!file_exists(file))
return;

new row[128], trash, size=file_size(file,1);
for(new i=0;i<size;i++)
{
read_file(file, i, row, charsmax(row), trash);

if((contain(row,";")!=0) && strlen(row) && klasid<MAX_ILOSC_KLAS+1)
{
replace(row, charsmax(row), "[klasa]", "");
split(row, nazwa_klasy[klasid], charsmax(nazwa_klasy[]),
nazwa_frakcji[klasid], charsmax(nazwa_frakcji[]), "[frakcja]");
klasid++;
}
}
}



Szukamy funkcji ZarejestrujKlase i po
wytrzymalosc_klas[ilosc_klas] = get_param(7);
dodajemy

for(new i=0;i<klasid;i++){
if(equali(nazwy_klas[ilosc_klas],nazwa_klasy[i])){
frakcja_klas[ilosc_klas] = nazwa_frakcji[i];
}
}



Szukamy funkcji WybierzKlase usuwamy ją ,
szukamy funkcji WybierzKlase_Handle usuwamy ją zamiast nich wklejamy

public WybierzKlase(id)
{
new menu = menu_create("Wybierz klase:", "WybierzKlase_Frakcje");
for(new i=1; i <= ilosc_klas; i++)
{
if(!equal(frakcja_klas[i],"") && !is_in_previous(frakcja_klas[i],i)){
menu_additem(menu,frakcja_klas[i],frakcja_klas[i])
}
}

menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);
}

public WybierzKlase_Frakcje(id, menu, item)
{
if(item == MENU_EXIT){
menu_destroy(menu);
return PLUGIN_CONTINUE;
}

new data[65], iName[64]
new acces, callback
menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback)

new menu2 = menu_create("Wybierz klase:", "WybierzKlase_Handle");

new klasa[50],szTmp[5];
for(new i=1; i <= ilosc_klas; i++)
{
if(equali(data,frakcja_klas[i])){
WczytajDane(id, i);
format(klasa, charsmax(klasa), "%s \yPoziom: %i",
nazwy_klas[i], poziom_gracza[id]);
num_to_str(i,szTmp,charsmax(szTmp));
menu_additem(menu2, klasa, szTmp);
}
}

WczytajDane(id, klasa_gracza[id]);

menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu2, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu2, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu2);

client_cmd(id, "spk QTM_CodMod/select");

menu_destroy(menu);
return PLUGIN_CONTINUE;
}

public WybierzKlase_Handle(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");

if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}

new data[65], iName[64]
new acces, callback
menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback)

item = str_to_num(data);
if(item == klasa_gracza[id] && !nowa_klasa_gracza[id])
return PLUGIN_CONTINUE;

nowa_klasa_gracza[id] = item;

if(klasa_gracza[id])
client_print(id, print_chat, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
else
{
UstawNowaKlase(id);
DajBronie(id);
ZastosujAtrybuty(id);
}
return PLUGIN_CONTINUE;
}

public bool:is_in_previous(frakcja[],from){
for(new i = from - 1;i>=1;i--){
if(equali(frakcja_klas[i],frakcja)){
return true;
}
}
return false;
}


Z tego co mi wiadomo to poradnik by Cypis. :)
Quote

  • +
  • -
dasiek's Photo dasiek 05.04.2013

Automatyczna wiadomość


Ten temat został przeniesiony z forum

AMX Mod X > Problemy z pluginami

do

Mody > Call of Duty Mod > Problemy
Quote

Mateos's Photo Mateos 06.04.2013

for(new i=0;i<klasid;i++){
if(equali(nazwy_klas[ilosc_klas],nazwa_klasy[i])){
frakcja_klas[ilosc_klas] = nazwa_frakcji[i];
}
}



I tutaj gdzie jest nazwa_klasy to mam dać np. Terrorysta ,a tam jest jest nazwa_frakcji to VIP ?
Edited by mateusztb, 06.04.2013 09:11.
Quote

Mateos's Photo Mateos 06.04.2013

Te poradniki są dziwne .......................
Robie wszystko wg. nich i nic nie działa.

Attached Files


Edited by mateusztb, 06.04.2013 10:44.
Quote

  • +
  • -
Guzik's Photo Guzik 06.04.2013

Nie korzystałem z tego, wklej po prostu tak jak jest wydaje mi się że tak powinno być.
Quote

Yakashi's Photo Yakashi 06.04.2013

na pewno cos robisz zle.. bo poradniki sa w 100% pewne... rob powoli tak jak jest.. i to nad czym bd sie zastanawial badz mial jakeis watpliwosci to napisz bo czasem sie wydaje ze mimo ze sie "kopiuje" ale to i tak moze nie za dzialac
Quote

Mateos's Photo Mateos 06.04.2013

Do zamknięcia.
Quote