[ROZWIĄZANE] Problem z kompilacją silnika...
HS4U
30.12.2013
Razem z kolegą postanowiliśmy założyć serwer COD Mod, generalnie własną sieć serwerów Counter Strike. Niestety przy dodawaniu szybkiego rozdawania punktów, wystąpiły błędy
Welcome to the AMX Mod X 1.8.1-300 Compiler. Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team QTM_CodMod.sma(453) : error 017: undefined symbol "ZapiszDane" QTM_CodMod.sma(1032) : error 017: undefined symbol "ResetujPunkty" QTM_CodMod.sma(1037) : error 017: undefined symbol "ResetujPunkty" QTM_CodMod.sma(1050) : error 017: undefined symbol "ZapiszDane" QTM_CodMod.sma(1548) : warning 203: symbol is never used: "bronie_druzyny" 4 Errors. Could not locate output file QTM_CodMod.amxx (compile failed).
Prosiłbym o szybką pomoc, wytłumaczenie o co chodziło w następujących błędach i jak zostały one naprawione i dodanie do silnika takich rzeczy jak wiadomości w HUD o:
● Nick gracza.
● Poziom gracza.
● Doświadczenie gracza.
● Perk gracza.
● Nazwa forum.
Prosiłbym o to, aby HUD znajdował się w środkowym, górnym rogu.
|______________________________________________________________|
~ Dopisuje do tematu.
Edytowałem sobie cod_shop.sma, przy kompilowaniu wyskoczyły mi następujące błędy:
Welcome to the AMX Mod X 1.8.1-300 Compiler. Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team cod_shop.sma(20) : error 029: invalid expression, assumed zero cod_shop.sma(20 -- 21) : warning 215: expression has no effect cod_shop.sma(21) : error 029: invalid expression, assumed zero cod_shop.sma(21 -- 22) : warning 215: expression has no effect cod_shop.sma(22) : error 029: invalid expression, assumed zero cod_shop.sma(22) : fatal error 107: too many error messages on one line Compilation aborted. 4 Errors.
Prosiłbym o poprawienie tego błędu.
Załączone pliki
Użytkownik HS4U edytował ten post 30.12.2013 18:56
glut
30.12.2013
Ten temat został przeniesiony z forum
AMX Mod X → Pytania dotyczące pluginów
do
Scripting AMXX → Prośby o kompilacje pluginów / Problemy z kompilacją
Wielkie Jol
31.12.2013
#include <amxmodx> #include <codmod> #include <engine> #include <cstrike> #include <fun> public plugin_init(){ register_plugin("Sklep by MieTeK ed. HS4U", "1.3", "MieTeK ed. HS4U"); register_clcmd("say /sklep", "Sklep"); register_clcmd("say /kup", "Sklep"); } public Sklep(id){ new tytul[25]; format(tytul, 24, "\rSklep by \yMieTeK ed. HS4U"); new menu = menu_create(tytul, "Sklep_Handler"); menu_additem(menu, "Granat wybuchowy \r[Dostajesz granat wybuchowy] \yKoszt: \r5000$"); menu_additem(menu, "Granat oslepiajacy \r[Dostajesz granat oslepiajacy] \yKoszt: \r3000$"); menu_additem(menu, "Grawitacja \r[Dostajesz 300 grawitacji] \yKoszt: \r16000$"); menu_additem(menu, "Ruletka \r[Losowanie bonusow] \yKoszt: \r4000$"); menu_additem(menu, "Perk \r[Dostajesz losowy perk] \yKoszt: \r5000$"); menu_additem(menu, "Doswiadczenie \r[Losowanie XP 6000/7500] \yKoszt: \r7500$"); menu_additem(menu, "Super Doswiadczenie \r[Losowanie XP 12000/14500] \yKoszt: \r12000$"); menu_additem(menu, "Mega Doswiadczenie \r[Losowanie XP 17000/21300] \yKoszt: \r16000$"); menu_additem(menu, "Buty Szturmowca \r[Nie slychac twoich krokow] \yKoszt: \r10000$"); } public Sklep_Handler(id, menu, item){ if(!is_user_alive(id) || !is_user_connected(id)) return PLUGIN_CONTINUE; new kasa = cs_get_user_money(id); if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_CONTINUE; } switch(item){ case 0: { if(kasa >= 5000){ cod_give_weapon(id, CSW_HEGRENADE); cs_set_user_money(id, kasa-5000); client_print(id, print_chat, "[COD:MW] Kupiles granat wybuchowy!"); } if(kasa < 5000) client_print(id, print_chat, "[COD:MW] Zapomnij, masz za malo hajsu!"); } case 1: { if(kasa >= 3000) { cod_give_weapon(id, CSW_FLASHBANG); cs_set_user_money(id, kasa-3000); client_print(id, print_chat, "[COD:MW] Kupiles granat oslepiajacy!"); } if(kasa < 3000) client_print(id, print_chat, "[COD:MW] Zapomnij, masz za malo hajsu!"); } case 2: { if(kasa >= 11000) { cs_set_user_money(id, kasa-11000); set_user_gravity(id, 0.3); client_print(id, print_chat, "[COD:MW] Otrzymales 300 grawitacji!"); } if(kasa < 11000) client_print(id, print_chat, "[COD:MW] Zapomnij, masz za malo hajsu!"); } case 3: { if(kasa >= 4000) { cs_set_user_money(id, kasa-4000); client_print(id, print_chat, "[COD:MW] Trwa losowanie!"); new totek = random_num(0, 10); switch(totek) { case 0: { new moneybonus = random_num(500,5000); client_print(id, print_chat, "[COD:MW] Wygrales kase %i$!", moneybonus); cs_set_user_money(id, moneybonus); } case 1: { new moneybonus = random_num(5000,16000); client_print(id, print_chat, "[COD:MW] Wygrales super kase %i$!", moneybonus); cs_set_user_money(id, moneybonus); } case 2: { set_user_gravity(id, get_user_gravity(id)-0.5); client_print(id, print_chat, "[COD:MW] Wygrales nizsza grawitacje!"); } case 3: client_print(id, print_chat, "[COD:MW] Lipa nic nie wygrales"); case 4: { new bonusxp = random_num(2000,10000); cod_set_user_xp(id, cod_get_user_xp(id)+bonusxp); client_print(id, print_chat, "[COD:MW] Wygrales %i dodatkowego EXP'a !", bonusxp); } case 5: { cod_set_user_perk(id, -1, -1, 1); client_print(id, print_chat, "[COD:MW] Wygrales losowy perk!"); } case 6: { new healthbonus = random_num(30,100); set_user_health(id, get_user_health(id)+healthbonus); client_print(id, print_chat, "[COD:MW] Wygrales %i dodatkowego HP!", healthbonus); } case 7: { new healthbonus = random_num(10,65); set_user_health(id, get_user_health(id)-healthbonus); client_print(id, print_chat, "[COD:MW] Straciles %i HP!", healthbonus); } case 8: client_print(id, print_chat, "[COD:MW] Lipa nic nie wygrales!"); case 9: { new xpbonus = random_num(7500,15000); cod_set_user_xp(id, cod_get_user_xp(id)+xpbonus); client_print(id, print_chat, "[COD:MW] Wygrales %i dodatkowego EXP'a!", xpbonus); } case 10: { client_print(id, print_chat, "[COD:MW] Lipa nic nie wygrales!"); } } } } case 4: { if(kasa >= 5000) { cs_set_user_money(id, kasa-5000); cod_set_user_perk(id, -1, -1, 1); client_print(id, print_chat, "[COD:MW] Kupiles losowy perk!"); } if(kasa < 5000) client_print(id, print_chat, "[COD:MW] Zapomnij, masz za malo hajsu!"); } case 5: { if(kasa >= 7500) { new exp = cod_get_user_xp(id); new losowy = random_num(6000, 7500); cs_set_user_money(id, kasa-7500); cod_set_user_xp(id, exp+losowy) client_print(id, print_chat, "[COD:MW] Dostales %i EXP'a!", losowy); } if(kasa < 7500) client_print(id, print_chat, "[COD:MW] Zapomnij, masz za malo hajsu!"); } case 6: { if(kasa >= 12000) { new exp = cod_get_user_xp(id); new losowy = random_num(12000, 14500); cs_set_user_money(id, kasa-12000); cod_set_user_xp(id, exp+losowy) client_print(id, print_chat, "[COD:MW] Dostales %i EXP'a!", losowy); } if(kasa < 12000) client_print(id, print_chat, "[COD:MW] Zapomnij, masz za malo hajsu!"); } case 7: { if(kasa >= 16000) { new exp = cod_get_user_xp(id); new losowy = random_num(17000, 21300); cs_set_user_money(id, kasa-16000); cod_set_user_xp(id, exp+losowy) client_print(id, print_chat, "[COD:MW] Dostales %i EXP'a!", losowy); } if(kasa < 16000) client_print(id, print_chat, "[COD:MW] Zapomnij, masz za malo hajsu!"); } case 8:{ if(kasa >= 10000){ set_user_footsteps(id, 1); cs_set_user_money(id, kasa-10000); client_print(id, print_chat, "[COD:MW] Kupiles buty szturmowca!"); } if(kasa < 10000) client_print(id, print_chat, "[COD:MW] Zapomnij, masz za malo hajsu!"); } } return PLUGIN_CONTINUE; }
Użytkownik Wielkie Jol edytował ten post 31.12.2013 10:09
HS4U
31.12.2013
Plik skompilował się, dziękuję Ci bardzo! Można wiedzieć co było błędem w całym kodzie?
Oczywiście PLUSIK dla Ciebie.
Wielkie Jol
31.12.2013
public Sklep(id) { new tytul[25]; format(tytul, 24, "\rSklep by \yMieTeK ed. HS4U"); new menu = menu_create(tytul, "Sklep_Handler"); menu_additem(menu, "Granat wybuchowy \r[Dostajesz granat wybuchowy] \yKoszt: \r5000$");/1 menu_additem(menu, "Granat oslepiajacy \r[Dostajesz granat oslepiajacy] \yKoszt: \r3000$");/2 menu_additem(menu, "Grawitacja \r[Dostajesz 300 grawitacji] \yKoszt: \r16000$");/3 menu_additem(menu, "Ruletka \r[Losowanie bonusow] \yKoszt: \r4000$");/4 menu_additem(menu, "Perk \r[Dostajesz losowy perk] \yKoszt: \r5000$");/5 menu_additem(menu, "Doswiadczenie \r[Losowanie XP 6000/7500] \yKoszt: \r7500$");/6 menu_additem(menu, "Super Doswiadczenie \r[Losowanie XP 12000/14500] \yKoszt: \r12000$");/7 menu_additem(menu, "Mega Doswiadczenie \r[Losowanie XP 17000/21300] \yKoszt: \r16000$");/8 menu_additem(menu, "Buty Szturmowca \r[Nie slychac twoich krokow] \yKoszt: \r10000$");/9 }
W tym miejscu było za mało o jeden /, przez co plugin czytał dalsze liczby jako zmienne ( 1,2,3,4...)
Następnie do Case 3 było za mało nawiasików klamrowych ( } ), przez co case 3 gryzł się z innymi.
Użytkownik Wielkie Jol edytował ten post 31.12.2013 10:17
HS4U
31.12.2013
Aaaa! Dobrze już wszystko rozumiem, jest może jakiś kontakt do Ciebie nie wiem Skype, GG, TeamSpeak? Uprzedzam, że nie mam Steam.
@Topic: Gdybyś mógł to prosiłbym Cię jeszcze o naprawę QTM_Codmod (dodawałem szybkie dodawanie statystyk), już bez tego HUD itd. gdyby było to dla Ciebie problemem.
Wielkie Jol
31.12.2013
Co do silnika, na końcu dodaj to
public ZapiszDane(id) { if(!klasa_gracza[id]) return PLUGIN_CONTINUE; new vaultkey[128],vaultdata[256], identyfikator[64]; format(vaultdata, charsmax(vaultdata),"#%i#%i#%i#%i#%i#%i", doswiadczenie_gracza[id], poziom_gracza[id], inteligencja_gracza[id], zdrowie_gracza[id], wytrzymalosc_gracza[id], kondycja_gracza[id]); new typ_zapisu = get_pcvar_num(cvar_typ_zapisu); switch(typ_zapisu) { case 1: copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]); case 2: get_user_authid(id, identyfikator, charsmax(identyfikator)); case 3: get_user_ip(id, identyfikator, charsmax(identyfikator)); } format(vaultkey, charsmax(vaultkey),"%s-%s-%i-cod", identyfikator, nazwy_klas[klasa_gracza[id]], typ_zapisu); nvault_set(vault,vaultkey,vaultdata); return PLUGIN_CONTINUE; } public ResetujPunkty(id) { punkty_gracza[id] = (poziom_gracza[id]-1)*2; inteligencja_gracza[id] = 0; zdrowie_gracza[id] = 0; kondycja_gracza[id] = 0; wytrzymalosc_gracza[id] = 0; if(punkty_gracza[id]) PrzydzielPunkty(id); }
Jak dodawałeś punkty jakimś sposobem usunąłeś te funkcje, które odpowiadają za zapis danych i za resetowanie punktów u gracza
HS4U
31.12.2013
Welcome to the AMX Mod X 1.8.1-300 Compiler. Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team QTM_CodMod.sma(1582) : warning 203: symbol is never used: "bronie_druzyny" Header size: 4280 bytes Code size: 48088 bytes Data size: 297568 bytes Stack/heap size: 16384 bytes; max. usage is unknown, due to recursion Total requirements: 366320 bytes 1 Warning. Done.Mam rozumieć, że to może zostać i mogę spokojnie silnik wgrać na serwer tak?
http://amxx.pl/pastebin/354jhshmemxq/
Użytkownik glut edytował ten post 31.12.2013 10:41
Źle wstawiony kod
glut
31.12.2013
new bronie_druzyny[] = {0, 1<<CSW_GLOCK18, 1<<CSW_USP}, bronie_dozwolone = 1<<CSW_KNIFE | 1<<CSW_C4;na
new bronie_dozwolone = 1<<CSW_KNIFE | 1<<CSW_C4;Ponieważ zmienna bronie_druzyny nie została użyta ani razu i myślę że jest Ci nie potrzebna ale jak może Ci się przydać to za komentuj ją sobie na jakiś czas czyli
//new bronie_druzyny[] = {0, 1<<CSW_GLOCK18, 1<<CSW_USP}; new bronie_dozwolone = 1<<CSW_KNIFE | 1<<CSW_C4;
HS4U
31.12.2013
Dobrze problem rozwiązany, bardzo dziękuję za pomoc tobie.
● Wielkie Jol
● glut
Bez was, na pewno nie ogarnąłbym tego sam.
glut
31.12.2013
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL