Admin vote
adi7
04.11.2012
Teraz jest tak. Admin robi vote gracze głosują a później wyskakuje menu czy zaakceptować wynik. Jak zrobić by nie było tego menu i mapa zmieniała się po rundzie?
Gość_21977_* 05.11.2012
Automatyczna wiadomość
Ten temat został przeniesiony z forum
AMX Mod X → Pytania
do
Scripting AMXX → Pluginy
Ten temat został przeniesiony z forum
AMX Mod X → Pytania
do
Scripting AMXX → Pluginy
Gość_21977_* 05.11.2012
1. Ponieważ będziemy chcieli zmienić mapę dopiero w nowej rundzie, to potrzebować będziemy nowej zmiennej, np.
2. Ponieważ będziemy musieli zmienić mapę oraz ją pobrać do zmiennej, to wpiszemy ją do cvaru amx_nextmap. Tym samym stworzymy sobie pointer wskazujący na ten cvar
3. Następnie zarejestrujemy nową rundę (w plugin_init)
4. W funkcji checkVotes, dla komendy zmiany mapy będziemy musieli zablokować wywołanie zapytania i zamiast tego poinformować plugin o chęci zmiany mapy w nowej rundzie, w tym celu najpierw wyłaniamy polecenie zmiany mapy (changelevel [map])
Załączam także poglądowo pełne SMA (możliwe, że macie inną wersję lub zmodyfikowaną)
adminvote.sma 16,91 KB 46 Ilość pobrań
new bool:g_changeMapInNewRound=falsektóra będzie informować, czy w nowej rundzie zmienić mapę, czy też nie. Dodajemy więc tę linijkę.
2. Ponieważ będziemy musieli zmienić mapę oraz ją pobrać do zmiennej, to wpiszemy ją do cvaru amx_nextmap. Tym samym stworzymy sobie pointer wskazujący na ten cvar
new pCvarAmxNextMaporaz rejestrujemy ten cvar
plugin_cfg(){
pCvarAmxNextMap=get_cvar_pointer("amx_nextmap");
}
3. Następnie zarejestrujemy nową rundę (w plugin_init)
register_event("HLTV", "event_new_round", "a", "1=0", "2=0")Od razu zaimplementujemy działanie listenera
public event_new_round(){
if(g_changeMapInNewRound){
new map[32];
get_pcvar_string(pCvarAmxNextMap, map, 31);
server_cmd("amx_map %s", map);
}
}
4. W funkcji checkVotes, dla komendy zmiany mapy będziemy musieli zablokować wywołanie zapytania i zamiast tego poinformować plugin o chęci zmiany mapy w nowej rundzie, w tym celu najpierw wyłaniamy polecenie zmiany mapy (changelevel [map])
if(equali(g_Execute,"changelevel",11)){a następnie dodać instrukcję zmiany cvaru amx_nextmap i poinformowania pluginu o tym, że w nowej rundzie chcemy mieć inną mapę
set_pcvar_string(pCvarAmxNextMap,g_Execute[12]);Tym samym, fragment funkcji checkVotes będzie wyglądał nastęopująco
g_changeMapInNewRound=true;
if (g_execResult)
{
g_execResult = false
if (is_user_connected(g_voteCaller))
{
if(equali(g_Execute,"changelevel",11)){
set_pcvar_string(pCvarAmxNextMap,g_Execute[12]);
g_changeMapInNewRound=true;
} else {
new menuBody[512], lTheResult[32], lYes[16], lNo[16]
format(lTheResult, 31, "%L", g_voteCaller, "THE_RESULT")
format(lYes, 15, "%L", g_voteCaller, "YES")
format(lNo, 15, "%L", g_voteCaller, "NO")
new len = format(menuBody, 511, g_coloredMenus ? "\y%s: \w%s^n^n" : "%s: %s^n^n", lTheResult, g_Execute)
len += format(menuBody[len], 511 - len, g_coloredMenus ? "\y%L^n\w" : "%L^n", g_voteCaller, "WANT_CONTINUE")
format(menuBody[len], 511 - len, "^n1. %s^n2. %s", lYes, lNo)
show_menu(g_voteCaller, 0x03, menuBody, 10, "The result: ")
set_task(10.0, "autoRefuse", 4545454)
}
}
else if(equali(g_Execute,"changelevel",11)){
set_pcvar_string(pCvarAmxNextMap,g_Execute[12]);
g_changeMapInNewRound=true;
} else
set_task(2.0, "delayedExec", 0, g_Execute, g_execLen)
}
Załączam także poglądowo pełne SMA (możliwe, że macie inną wersję lub zmodyfikowaną)
adminvote.sma 16,91 KB 46 Ilość pobrań
adi7
06.11.2012
Nie wiem czemu ,ale mi to nie działa. Nawet mi się to nie wyświetla to menu. Jest tak samo jak wcześniej. Może to czy chcesz kontynuować blokuje to? Wciskałem nawet nie i czekałem do końca rundy ,ale mapa pozostaje ta sama. Może wyrzucić to czy chcesz kontynuować? Mi to nie potrzebne
Użytkownik adi7 edytował ten post 06.11.2012 06:21
Użytkownik adi7 edytował ten post 06.11.2012 06:21
Gość_21977_* 06.11.2012
Jak zrobić by nie było tego menu (…)
?Nawet mi się to nie wyświetla to menu.
adi7
06.11.2012
Po prostu nic się nie zmieniło. Najpierw zachowałem sobie czystą kopię. Edytowałem i nic. Pomyślałem że pewnie coś zrobiłem źle. Porównałem sma twoje do mojego i takie same ,ale wrzuciłem twoje i nadal to samo. Mapa po rundzie się nie zmienia i nadal wyskakuje czy kontynuować.
P.s tak kompilowałem i aktualizowałem serwer.
U ciebie działa? Może ktoś sprawdzić?
P.s tak kompilowałem i aktualizowałem serwer.
U ciebie działa? Może ktoś sprawdzić?