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.
|
#21
Napisano 22.06.2011 18:07
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2006 ITB CompuPhase, AMX Mod X Team
a.sma(964) : error 010: invalid function or declaration
a.sma(966) : error 010: invalid function or declaration
a.sma(971) : error 021: symbol already defined: "UstawNowaKlase"
a.sma(972) : error 021: symbol already defined: "DajBronie"
a.sma(973) : error 021: symbol already defined: "ZastosujAtrybuty"
a.sma(974) : error 021: symbol already defined: "ZapiszDane"
6 Errors.
Could not locate output file a.amxx (compile failed).
#22
Napisano 22.06.2011 19:12
#23
Napisano 22.06.2011 20:06
Dodano 23 czerwiec 2011 - 10:24:
Mam pytanie czy jest mozliwe zrobienie czegos takiego ze jak nabijemy potrzebny lvl np: na komandosie to dostajemy wybor czy chcemy np: szybkiego komandosa (taka klasa) czy celnego komandosa. czy da sie cos takiego zrobic
Dodano 23 czerwiec 2011 - 16:51:
A jeszcze 1 sprawa nie wiem dlaczego klasa ktora podales nie chce mi sie skompilowac. Daje do kompilatora ta klase co podales i sie wyswietla blad Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2006 ITB CompuPhase, AMX Mod X Team
a.sma(23) : error 017: undefined symbol "cod_register_advance"
a.sma(54) : warning 203: symbol is never used: "bronie"
a.sma(54) : warning 203: symbol is never used: "inteligencja"
a.sma(54) : warning 203: symbol is never used: "kondycja"
a.sma(54) : warning 203: symbol is never used: "wytrzymalosc"
a.sma(54) : warning 203: symbol is never used: "zdrowie"
1 Error.
Could not locate output file a.amxx (compile failed).
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <codmod> #include <hamsandwich> #define DMG_BULLET (1<<1) new bool:ma_klase[33]; new const nazwa[] = "Elitarny Snajper"; new const opis[] = "200 procent obrazen z AWP(+inteligencja), 1/1 szansy na natychmiastowe zabicie z noza(PPM)"; new const bronie = 1<<CSW_DEAGLE | 1<<CSW_AWP; new const zdrowie = 80; new const kondycja = 75; new const inteligencja = 20; new const wytrzymalosc = 50; public plugin_init() { register_plugin(nazwa, "1.0", "QTM_Peyote"); cod_register_advance(cod_get_classid("Snajper"), 60, nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); } public cod_class_enabled(id) ma_klase[id] = true; public cod_class_disabled(id) ma_klase[id] = false; public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_klase[idattacker]) return HAM_IGNORED; if(damagebits & DMG_BULLET) { new weapon = get_user_weapon(idattacker); if(weapon == CSW_KNIFE && damage > 20.0) cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits); if(weapon == CSW_AWP) cod_inflict_damage(idattacker, this, damage*1.0, 1.0, idinflictor, damagebits); } return HAM_IGNORED; }
#24
Napisano 23.06.2011 18:55
Popularny
Wersja dla tych, który mają wgrane frakcje DarkGL'a
1. Instalujemy frakcje, a następnie awanse według instrukcji z pierwszego posta.
2. Zmieniamy publici WybierzKlase, WybierzKlase_Handle i WybierzKlase_Frakcje na:
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], dana_klasa;
for(new i=1; i <= ilosc_klas; i++)
{
if(JestAwansem(i))
continue;
WczytajDane(id, i);
dana_klasa = i;
for(;
{
if(awansuje_do[dana_klasa] && poziom_gracza[id] >= awanse[ZnajdzAwans(dana_klasa, awansuje_do[dana_klasa])][2])
{
dana_klasa = awansuje_do[dana_klasa];
WczytajDane(id, dana_klasa);
}
else break;
}
if(equali(data,frakcja_klas[dana_klasa]))
{
formatex(klasa, charsmax(klasa), "%s \yPoziom: %i", nazwy_klas[dana_klasa], poziom_gracza[id]);
num_to_str(dana_klasa, 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;
}
3. W zależności od tego, jakim sposobem instalowaliśmy frakcje, dokonujemy różnych zmian:
- gdy instalowaliśmy I sposobem:
Zmieniamy public ZarejestrujAwans na:
public ZarejestrujAwans(plugin, params)
{
if(params != 10)
return PLUGIN_CONTINUE;
if(++ilosc_klas > MAX_ILOSC_KLAS)
return -1;
pluginy_klas[ilosc_klas] = plugin;
new awans_z = get_param(1);
awansuje_do[awans_z] = ilosc_klas;
awansuje_z[ilosc_klas] = awans_z;
ilosc_awansow++;
awanse[ilosc_awansow][1] = ilosc_klas;
awanse[ilosc_awansow][0] = awans_z;
awanse[ilosc_awansow][2] = get_param(2);
get_string(3, nazwy_klas[ilosc_klas], MAX_WIELKOSC_NAZWY);
get_string(4, opisy_klas[ilosc_klas], MAX_WIELKOSC_OPISU);
bronie_klasy[ilosc_klas] = get_param(5);
zdrowie_klas[ilosc_klas] = get_param(6);
kondycja_klas[ilosc_klas] = get_param(7);
inteligencja_klas[ilosc_klas] = get_param(8);
wytrzymalosc_klas[ilosc_klas] = get_param(9);
get_string(10, frakcja_klas[ilosc_klas], MAX_WIELKOSC_FRAKCJA);
return ilosc_klas;
}
Zmieniamy natyw w pliku codmod.inc na:
native cod_register_advance(z_klasy, od_levela, const nazwa[], const opis[], bronie, punkty_zdrowia, punkty_kondycji, punkty_inteligencji, punkty_wytrzymalosci, const frakcja[]);
- gdy instalowaliśmy II sposobem:
Zmieniamy public ZarejestrujAwans na:
public ZarejestrujAwans(plugin, params)
{
if(params != 9)
return PLUGIN_CONTINUE;
if(++ilosc_klas > MAX_ILOSC_KLAS)
return -1;
pluginy_klas[ilosc_klas] = plugin;
new awans_z = get_param(1);
awansuje_do[awans_z] = ilosc_klas;
awansuje_z[ilosc_klas] = awans_z;
ilosc_awansow++;
awanse[ilosc_awansow][1] = ilosc_klas;
awanse[ilosc_awansow][0] = awans_z;
awanse[ilosc_awansow][2] = get_param(2);
get_string(3, nazwy_klas[ilosc_klas], MAX_WIELKOSC_NAZWY);
get_string(4, opisy_klas[ilosc_klas], MAX_WIELKOSC_OPISU);
bronie_klasy[ilosc_klas] = get_param(5);
zdrowie_klas[ilosc_klas] = get_param(6);
kondycja_klas[ilosc_klas] = get_param(7);
inteligencja_klas[ilosc_klas] = get_param(8);
wytrzymalosc_klas[ilosc_klas] = get_param(9);
if(equali(nazwy_klas[ilosc_klas], "Elitarny Snajper"))
frakcja_klas[ilosc_klas] = "Amerykanie";
return ilosc_klas;
}
Teraz przed return ilosc_klas, wypisujemy wszystkie klasy, które są zarejestrowane poprzez natyw cod_register_advance (czyli te klasy, które są awansami) w taki sposób:
if(equali(nazwy_klas[ilosc_klas], "Nazwa klasy, do której można awansować"))
frakcja_klas[ilosc_klas] = "Nazwa frakcji";
- jeśli instalowaliśmy sposobem Cypis'a, zmieniamy funkcję ZarejestrujAwans na:
public ZarejestrujAwans(plugin, params)
{
if(params != 9)
return PLUGIN_CONTINUE;
if(++ilosc_klas > MAX_ILOSC_KLAS)
return -1;
pluginy_klas[ilosc_klas] = plugin;
new awans_z = get_param(1);
awansuje_do[awans_z] = ilosc_klas;
awansuje_z[ilosc_klas] = awans_z;
ilosc_awansow++;
awanse[ilosc_awansow][1] = ilosc_klas;
awanse[ilosc_awansow][0] = awans_z;
awanse[ilosc_awansow][2] = get_param(2);
get_string(3, nazwy_klas[ilosc_klas], MAX_WIELKOSC_NAZWY);
get_string(4, opisy_klas[ilosc_klas], MAX_WIELKOSC_OPISU);
bronie_klasy[ilosc_klas] = get_param(5);
zdrowie_klas[ilosc_klas] = get_param(6);
kondycja_klas[ilosc_klas] = get_param(7);
inteligencja_klas[ilosc_klas] = get_param(8);
wytrzymalosc_klas[ilosc_klas] = get_param(9);
for(new i=0;i<klasid;i++){
if(equali(nazwy_klas[ilosc_klas],nazwa_klasy[i])){
frakcja_klas[ilosc_klas] = nazwa_frakcji[i];
}
}
return ilosc_klas;
}
A następnie wypisujemy wszystkie klasy, do których możemy awansować, do cod_frakcje.ini, jak wszystkie inne.
4. Kompilujemy plik QTM_CodMod.sma.
Gotowce:
- I sposób:
awanse_frakcje1.sma 42,81 KB 297 Ilość pobrań
awanse_frakcje1.amxx
- II sposób:
awanse_frakcje2.sma 42,88 KB 179 Ilość pobrań
awanse_frakcje2.amxx
- sposób Cypisa:
awanse_frakcjec.sma 44,14 KB 439 Ilość pobrań
awanse_frakcjec.amxx
Użytkownik Goliath edytował ten post 25.09.2011 19:40
#25
Napisano 23.06.2011 19:45
#26
Napisano 23.06.2011 21:53
Może pokaż błędy z kompilatora?
#27
Napisano 24.06.2011 08:02
Welcome to the AMX Mod X 1.8.1-300 Compiler. Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team codclass_deathknight.sma(23) : error 017: undefined symbol "cod_register_advance" codclass_deathknight.sma(54) : warning 203: symbol is never used: "bronie" codclass_deathknight.sma(54) : warning 203: symbol is never used: "inteligencja" codclass_deathknight.sma(54) : warning 203: symbol is never used: "kondycja" codclass_deathknight.sma(54) : warning 203: symbol is never used: "wytrzymalosc" codclass_deathknight.sma(54) : warning 203: symbol is never used: "zdrowie" 1 Error. Could not locate output file codclass_deathknight.amxx (compile failed).
#28
Napisano 24.06.2011 08:39
#29
Napisano 24.06.2011 14:14
#30
Napisano 24.06.2011 22:05
Mam nadzieje ze zrozumieliscie.
#31
Napisano 25.06.2011 10:55
#32
Napisano 25.06.2011 16:08
#33
Napisano 25.06.2011 18:13
#34
Napisano 25.06.2011 18:32
Dobra dodalem ten natyw. Kompiluje kompilatorem z tej strony i nic dale to samo. Nie ogarniam
Wyraźnie dużą czcionką miałeś napisane w pierwszym poście że musisz kompilować lokalnie a nie przez www <facepalm>
#35
Napisano 25.06.2011 19:14
Użytkownik newax edytował ten post 25.06.2011 19:36
#36
Napisano 25.06.2011 19:56
#37
Napisano 25.06.2011 21:18
#38
Napisano 26.06.2011 00:02
Siema:)A dało by radę zrobić, aby klasy do awansu były od początku widoczne, a jak je wybieramy to pisało, że trzeba zdobyć jakiś lvl na innej klasie? I aby po awansie można było by grać nadal klasą o stopień niższy.
Dalo by rade takie cos zrobic takze do tego sposobu z frakcja DarkaGL?
#39
Napisano 26.06.2011 09:16
Popularny
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]))
{
if(awansuje_z[i])
{
new bool:moze = false;
WczytajDane(id, awansuje_z[i]);
if(poziom_gracza[id] >= awanse[ZnajdzAwans(awansuje_z[i], i)][2])
moze = true;
WczytajDane(id, i);
if(moze) formatex(klasa, charsmax(klasa), "%s \yPoziom: %i", nazwy_klas[i], poziom_gracza[id]);
else formatex(klasa, charsmax(klasa), "\r%s \yPoziom: %i", nazwy_klas[i], poziom_gracza[id]);
}
else
{
WczytajDane(id, i);
formatex(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(awansuje_z[item])
{
WczytajDane(id, awansuje_z[item]);
new bool:moze, a = ZnajdzAwans(awansuje_z[item], item)
if(poziom_gracza[id] >= awanse[a][2])
moze = true;
WczytajDane(id, klasa_gracza[id]);
if(!moze)
{
client_print(id, print_chat, "[COD:MW] Aby uzywac tej klasy musisz zdobyc %i poziom na klasie %s!", awanse[a][2], nazwy_klas[awansuje_z[item]]);
return PLUGIN_CONTINUE;
}
}
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;
}
Nie testowane. Jeżeli nie chcesz czerwonego koloru dla klas, których nie możesz używać, podmień public WybierzKlase_Frakcje na taki, jaki był w domyślnych frakcjach.
#40
Napisano 26.06.2011 17:46
Również z jednym lub większą ilością słów kluczowych: CoD Nowy
CoD Nowy
perk zwiększający wytrzymałość pekuNapisany przez Rafii, 05.03.2024 cod nowy |
|
||||
|
CoD Nowy
Modele KlasyNapisany przez Puni07, 11.02.2024 cod nowy |
|
|||
CoD Nowy
Problem z dywizjąNapisany przez Puni07, 08.02.2024 cod nowy |
|
||||
CoD Nowy
Misjedodac exp Napisany przez Anonimowy09, 08.01.2024 cod nowy |
|
||||
CoD Nowy
Broń z cso do klasy postaciNapisany przez Voltia, 12.02.2023 cod nowy |
|
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych