←  Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

Nowy Plugin
Prośba o napisanie "Random next map"

Zablokowany

  • +
  • -
Sunfer - zdjęcie Sunfer 30.08.2010

Prosił bym bardzo o napisanie PLUGINU który by wybierał nextmapę sam losowo
Mapę losował sam z pliku mapcycle.txt lub też z mapcycle-noc.txt
Prosił bym również aby w pluginie była opcja wyłączenia ostatnich np. 20 map (to jest tylko przykład) granych na serwerze
Tak jak napisałem wyżej z macycle dzień albo noc a więc chciałbym również aby nie kolidowało to z pluginem mapcycle - dzień / noc
I o odpowiedniej porze dnia plugin losował mapę z odpowiedniego pliku

Jeśli ktoś by się podjął tego napisanie byłbym mu za to bardzo wdzięczny :)

Wszelkie pytania kierować tutaj jeśli jakie kolwiek będą
Odpowiedz

  • +
  • -
Owner123 - zdjęcie Owner123 30.08.2010

Łap:
#include <amxmodx>

new cvar_mapcyclefile;

public plugin_init()
{
register_plugin("Random Map", "1.0.0", "Owner");
fnRandomMap();
cvar_mapcyclefile = get_cvar_pointer("mapcyclefile");
}

fnRandomMap()
{
new szMapFile[32];
get_pcvar_string(cvar_mapcyclefile, szMapFile, charsmax(szMapFile));

new szText[32], iChars;
read_file(szMapFile, random(file_size(szMapFile, 1)), szText, charsmax(szText), iChars);

new szAlreadyMap[32];
get_mapname(szAlreadyMap, charsmax(szAlreadyMap));

if(equal(szAlreadyMap, szText))
fnRandomMap();

server_cmd("amx_nextmap %s", szText);
}
Odpowiedz

  • +
  • -
Sunfer - zdjęcie Sunfer 31.08.2010

Fajnie że ktoś zainteresował się tematem ale fajnie jak by
Mapcycle dzienny / nocny - Nieoficjalny polski support AMX Mod X
Przerobić ten plugin na to co ja chce :)
Z dodatkiem zapamiętywania ostatnich granych map (do 15 myślę aby fajnie było :P)
Tak aby wyłączyć je z losowania

02 wrzesień 2010 - 21:17:

Łap:

#include <amxmodx>

new cvar_mapcyclefile;

public plugin_init()
{
register_plugin("Random Map", "1.0.0", "Owner");
fnRandomMap();
cvar_mapcyclefile = get_cvar_pointer("mapcyclefile");
}

fnRandomMap()
{
new szMapFile[32];
get_pcvar_string(cvar_mapcyclefile, szMapFile, charsmax(szMapFile));

new szText[32], iChars;
read_file(szMapFile, random(file_size(szMapFile, 1)), szText, charsmax(szText), iChars);

new szAlreadyMap[32];
get_mapname(szAlreadyMap, charsmax(szAlreadyMap));

if(equal(szAlreadyMap, szText))
fnRandomMap();

server_cmd("amx_nextmap %s", szText);
}


Nie wiem dlaczego ale jak wrzucone to zostało na serwer to crashować go zaczęło

Zainteresuje się ktoś tym tematem może :P ??
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 03.09.2010

najpierw weź pointer a potem losuj mapę
fnRandomMap();
cvar_mapcyclefile = get_cvar_pointer("mapcyclefile");

cvar_mapcyclefile = get_cvar_pointer("mapcyclefile");
fnRandomMap();

Pomysł całkiem ciekawy, może potem mi się będzie chciało, bo teraz to idę spać xD
Odpowiedz

  • +
  • -
Sunfer - zdjęcie Sunfer 04.09.2010

Pomysł całkiem ciekawy, może potem mi się będzie chciało, bo teraz to idę spać xD


Fajnie jak byś znalazł chwilę na to :D

Pomysł mojego autorsta (po flaszce najlepsze przychodzą) lecz ja pisać nie umiem dlatego proszę o pomoc tutaj :)
W razie pytań / testów byle czego gdybyś chciał to pisz na 7744301GG
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 05.09.2010

Myślę, że kod jest w porządku, ale na pewno wymaga testów.

mp_lastplayed 15



Aa :D musisz zainstalować oba pluginy, ten i mapcycle dzienny/nocny, żeby osiągnąć zamierzony efekt

Załączone pliki

Odpowiedz

  • +
  • -
Sunfer - zdjęcie Sunfer 05.09.2010

No dobra dzięki zaraz sprawdzi się to jak działa :)

06 wrzesień 2010 - 01:08:
Działa znakomicie jak do tej pory nie wyskoczył mi żaden błąd ale jedno mnie denerwowało gdy testowałem to na serwerze z mała ilością map niestety gdy jest mało map na serwerze poniżej 15 to mapcykl nie był randomowy tylko szło wg standardowego cyklu od góry do dołu więc musiałem wrzucić powyżej 15 map na serwer wtedy mapy były randomowe zawsze z pozostałych 5 które nie były w lastplayed (na serwerze było 20 map wtedy już)

I tutaj moje pytanie czy dało by radę zrobić aby cvar mp_lastplayed dało się przestawić w plikach pluginu ?? niby zmieniałem tam wartość na 5 albo 10 ale wtedy znowu mapy szły znowu wg cyklu góra dół

PS.Może to ja coś zj***łem nie wiem :P Testowane po północy więc prawie śpię już
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 06.09.2010

Jasna sprawa, że mp_lastplayed powinien być mniejszy niż ilość map w mapcycle :P przewidziałem taką okoliczność w kodzie, że jednak jest większy i wtedy jakby przestawiam cvar na (ILOSC_MAP - 1), stąd brak losowości.

mp_lastplayed 5
powinno rozwiązać problem; jeśli nie działa wpisywanie w konsoli/configu zmień tu

register_cvar("mp_lastplayed", "15");
przekompiluj i zrób stop & start serwera (restart nie pomoże)


Usuń też plik lastplayed.ini
Odpowiedz

  • +
  • -
Sunfer - zdjęcie Sunfer 06.09.2010

A czy nie da rady zrobić tak aby w w cvarach to dało radę zmieniać ?? tylko trzeba bawić się w kompilowanie :P ??

Usuń też plik lastplayed.ini


Domyśliłem się :P Chociaż ten plik sam się podmienia przecież więc zastąpi najwyżej stary gdzie jest 15 map na liście na nowy gdzie będzie 5 tylko
Użytkownik Sunfer edytował ten post 06.09.2010 00:24
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 06.09.2010

da radę, przecież tak jest :P tylko może cvar nie chce się wczytać czy coś; ja to testowałem właśnie przy małej wartości cvara i działało

Znalazłem bug w kodzie, ściągnij sma jeszcze raz
Odpowiedz

  • +
  • -
Sunfer - zdjęcie Sunfer 06.09.2010

ja to testowałem właśnie przy małej wartości cvara i działało


Aha czyli wystarczy ręcznie zmieniać i będzie działać niby w h... roboty takie kompilowanie ale no przecież map na serwerze nie zmienia się codziennie tylko raz na jakiś czas i na dodatek ilość ich zazwyczaj przekracza te 15 :) ( a jak by nie przekraczało to zawsze można już się pofatygować i zmieniać to ręcznie w pliku random_map :) Lecz gdyby dało się tylko w cstrike\addons\amxmodx\configs\cvars było by cudownie :P

Znalazłem bug w kodzie, ściągnij sma jeszcze raz


Kk już ściągam

PS. Jeszcze raz wielkie dzięki za plugin :) Już miałem dość tych wszystkich syfowatych rtv pluginów a mapcykl normalny z czasem się nudzi jak gra się zawsze te same mapy po mapach
Użytkownik Sunfer edytował ten post 06.09.2010 00:31
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 06.09.2010

Myślałem, że coś z cvarem, ale wyszło na to, że losowało spośród 0-LASTMAPS zamiast 0-MAPCYCLE i wychodziło nie tak bardzo losowo jak miało :D muszę przestać numerowo-bezimiennie nazywać zmienne.

Proszę bardzo, lubię realizować takie pomysły.

Cvar powinnien działać wpisany w amxx.cfg / server.cfg
Odpowiedz

  • +
  • -
Sunfer - zdjęcie Sunfer 06.09.2010

Dziś dorzuciłem na serwer pluginy które może by coś tam "psuły" a mianowicie:
-Ostatnia runda - dokończymy ją
-WarmUP (chociaż tu to nie wiem co mogło by nawet psuć kumpel mi powiedział aby wrzucić :P)

I Zero problemów ze strony obu pluginów

Cvar powinnien działać wpisany w amxx.cfg / server.cfg


A co do tego Cvara tak działa on wrzucony do amxx.cfg można tam zmieniać wartość bez konieczności kompilowania całości


Lecz jeszcze na koniec zauważyłem coś takiego mianowicie mapcycle_night jest źle czytany jeśli jest w nim mniej map niż ustawione mp_lastplayed
Dokładniej mówiąc zmieniłem sobie mp_time2 na godzinę 14 tak aby niby była noc obecnie gdyż chciałem sprawdzić jak zachowuje się plugin w nocy
mp_lastplayed jest ustawione na 10 a w mapcycle_night jest 5 map (w mapcycle jest ich 20)
I gdy serwer ma wybierać nextmape myślałem że będzie on wybierać mapę z mapcycle_night po prostu w kolejności góra dół lecz plugin losuję wtedy mapę z mapcycle (day)

Czy to ja coś zwaliłem :P Czy to po prostu jakiś błąd ze strony mapcycle_night ( za mało map nie może tutaj byc ?)


EDIT:
Nie ważne to co pisałem z tym błędem cvary mi się pomieszały tylko plugin działa znakomicie
Reinstal Map-Day/Night pomógł mi poprstu
Jeśli w mapcycle_night jest mniej map niż ustawione w mp_lastplayed to mapy czyta z mapcycle_night od góry do dołu czyli prawidłowo :)


Lecz wtedy logach można znaleść taki o to error
L 09/06/2010 - 14:27:09: Start of error session.
L 09/06/2010 - 14:27:09: Info (map "de_nuke") (file "addons/amxmodx/logs/error_20100906.log")
L 09/06/2010 - 14:27:09: Invalid cellvector handle provided (6:3:3)
L 09/06/2010 - 14:27:09: [AMXX] Run time error 10 (plugin "random_map.amxx") (native "ArrayGetString") - debug not enabled!
L 09/06/2010 - 14:27:09: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).

Użytkownik Sunfer edytował ten post 06.09.2010 13:37
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 06.09.2010

[AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).

zrób to i wtedy wklej logi
Odpowiedz

  • +
  • -
Sunfer - zdjęcie Sunfer 06.09.2010

No dobra to może było głupie bo nawet nie czytałem co tam piszę do końca :P


L 09/06/2010 - 20:59:09: -------- Mapchange to cs_militia --------
[AMXX] Zaladowano 2 adminow z pliku
L 09/06/2010 - 20:59:11: Invalid cellvector handle provided (6:4:2)
L 09/06/2010 - 20:59:11: [AMXX] Displaying debug trace (plugin "random_map.amxx")
L 09/06/2010 - 20:59:11: [AMXX] Run time error 10: native error (native "ArrayGetString")
L 09/06/2010 - 20:59:11: [AMXX]    [0] random_map_18759.sma::plugin_cfg (line 68)

A teraz masz nowy error który wyskoczył przy tych samych ustawieniach co wcześniej
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 07.09.2010

dziwna sprawa, jak często to się zdarza? co mapę? jeśli masz na pewno najnowsze źródło skompilowane i zrobiłeś restart serwera po wrzuceniu nowego .amxx to podmień poprzednie losowanie na to i wtedy pokaż logi

//Losowanie do skutku
	new iRandom;
	log_amx("Mapcycle! %d", ArraySize(gMapcycleList));
	while(iSize2--){
		log_amx("^t%d", iSize2);
		iRandom = random_num(0, iSize2);
		log_amx("^tlos = %d", iRandom);
		ArrayGetString(gMapcycleList, iRandom, szMapcycle, MAPNAME_LEN-1);
		
		if(isLastPlayed(szMapcycle))
			ArrayDeleteItem(gMapcycleList, iRandom);
		else
			break;
	}
Odpowiedz

  • +
  • -
Sunfer - zdjęcie Sunfer 07.09.2010

Zdarzało się to tylko jeśli plugin miał wybierać mapę z mapcycle_night (przy cvararze mp_lastplayed 10 a w cyklu było tylko 5 map)
Nie było to co mapę tylko średnio co 3-4 nigdy przy tej samej mapie poprostu losowo to było

Tak wygląda log z mapcycle day teraz gdzie w cyklu jest 21 map a mp_lastplayed nadal 10
L 09/07/2010 - 13:09:02: -------- Mapchange to de_dust --------
L 09/07/2010 - 13:09:03: [random.amxx] Mapcycle! 21
L 09/07/2010 - 13:09:03: [random.amxx] 	20
L 09/07/2010 - 13:09:03: [random.amxx] 	los = 6
L 09/07/2010 - 13:09:03: [random.amxx] 	19
L 09/07/2010 - 13:09:03: [random.amxx] 	los = 2
L 09/07/2010 - 13:10:04: -------- Mapchange to cs_militia --------
L 09/07/2010 - 13:10:05: [random.amxx] Mapcycle! 21
L 09/07/2010 - 13:10:05: [random.amxx] 	20
L 09/07/2010 - 13:10:05: [random.amxx] 	los = 6
L 09/07/2010 - 13:10:05: [random.amxx] 	19
L 09/07/2010 - 13:10:05: [random.amxx] 	los = 10
L 09/07/2010 - 13:11:07: -------- Mapchange to cs_assault --------
L 09/07/2010 - 13:11:09: [random.amxx] Mapcycle! 21
L 09/07/2010 - 13:11:09: [random.amxx] 	20
L 09/07/2010 - 13:11:09: [random.amxx] 	los = 18
L 09/07/2010 - 13:11:09: [random.amxx] 	19
L 09/07/2010 - 13:11:09: [random.amxx] 	los = 17
L 09/07/2010 - 13:12:11: -------- Mapchange to de_torn --------
L 09/07/2010 - 13:12:12: [random.amxx] Mapcycle! 21
L 09/07/2010 - 13:12:12: [random.amxx] 	20
L 09/07/2010 - 13:12:12: [random.amxx] 	los = 13
L 09/07/2010 - 13:13:14: -------- Mapchange to de_cbble --------
L 09/07/2010 - 13:13:15: [random.amxx] Mapcycle! 21
L 09/07/2010 - 13:13:15: [random.amxx] 	20
L 09/07/2010 - 13:13:15: [random.amxx] 	los = 16
L 09/07/2010 - 13:14:17: -------- Mapchange to de_vertigo --------
L 09/07/2010 - 13:14:18: [random.amxx] Mapcycle! 21
L 09/07/2010 - 13:14:18: [random.amxx] 	20
L 09/07/2010 - 13:14:18: [random.amxx] 	los = 8
L 09/07/2010 - 13:15:20: -------- Mapchange to de_prodigy --------
L 09/07/2010 - 13:15:22: [random.amxx] Mapcycle! 21
L 09/07/2010 - 13:15:22: [random.amxx] 	20
L 09/07/2010 - 13:15:22: [random.amxx] 	los = 20

A tak z Mapcycle_night (5 map zmienna mp na 10 ustawiona)

L 09/07/2010 - 14:08:37: [random.amxx] Mapcycle! 5
L 09/07/2010 - 14:08:37: [random.amxx] 	4
L 09/07/2010 - 14:08:37: [random.amxx] 	los = 3
L 09/07/2010 - 14:08:37: [random.amxx] 	3
L 09/07/2010 - 14:08:37: [random.amxx] 	los = 0
L 09/07/2010 - 14:08:37: [random.amxx] 	2
L 09/07/2010 - 14:08:37: [random.amxx] 	los = 0
L 09/07/2010 - 14:09:38: -------- Mapchange to de_nuke --------
L 09/07/2010 - 14:09:39: [random.amxx] Mapcycle! 21
L 09/07/2010 - 14:09:39: [random.amxx] 	20
L 09/07/2010 - 14:09:39: [random.amxx] 	los = 9
L 09/07/2010 - 14:10:41: -------- Mapchange to de_piranesi --------
L 09/07/2010 - 14:10:42: [random.amxx] Mapcycle! 5
L 09/07/2010 - 14:10:42: [random.amxx] 	4
L 09/07/2010 - 14:10:42: [random.amxx] 	los = 0
L 09/07/2010 - 14:10:42: [random.amxx] 	3
L 09/07/2010 - 14:10:42: [random.amxx] 	los = 3
L 09/07/2010 - 14:11:43: -------- Mapchange to 1hp --------
L 09/07/2010 - 14:11:44: [random.amxx] Mapcycle! 5
L 09/07/2010 - 14:11:44: [random.amxx] 	4
L 09/07/2010 - 14:11:44: [random.amxx] 	los = 1
L 09/07/2010 - 14:11:44: [random.amxx] 	3
L 09/07/2010 - 14:11:44: [random.amxx] 	los = 3
L 09/07/2010 - 14:11:44: [random.amxx] 	2
L 09/07/2010 - 14:11:44: [random.amxx] 	los = 1
L 09/07/2010 - 14:12:45: -------- Mapchange to cs_militia --------
L 09/07/2010 - 14:12:46: [random.amxx] Mapcycle! 5
L 09/07/2010 - 14:12:46: [random.amxx] 	4
L 09/07/2010 - 14:12:46: [random.amxx] 	los = 1
L 09/07/2010 - 14:12:46: [random.amxx] 	3
L 09/07/2010 - 14:12:46: [random.amxx] 	los = 1
L 09/07/2010 - 14:12:46: [random.amxx] 	2
L 09/07/2010 - 14:12:46: [random.amxx] 	los = 2
L 09/07/2010 - 14:12:46: [random.amxx] 	1
L 09/07/2010 - 14:12:46: [random.amxx] 	los = 0
L 09/07/2010 - 14:13:47: -------- Mapchange to de_train --------
L 09/07/2010 - 14:13:48: [random.amxx] Mapcycle! 5
L 09/07/2010 - 14:13:48: [random.amxx] 	4
L 09/07/2010 - 14:13:48: [random.amxx] 	los = 1
L 09/07/2010 - 14:14:50: -------- Mapchange to de_nuke --------
L 09/07/2010 - 14:14:51: [random.amxx] Mapcycle! 5
L 09/07/2010 - 14:14:51: [random.amxx] 	4
L 09/07/2010 - 14:14:51: [random.amxx] 	los = 4
L 09/07/2010 - 14:14:51: [random.amxx] 	3
L 09/07/2010 - 14:14:51: [random.amxx] 	los = 0
L 09/07/2010 - 14:14:51: [random.amxx] 	2
L 09/07/2010 - 14:14:51: [random.amxx] 	los = 0
L 09/07/2010 - 14:14:51: [random.amxx] 	1
L 09/07/2010 - 14:14:51: [random.amxx] 	los = 1
L 09/07/2010 - 14:15:52: -------- Mapchange to de_inferno --------
L 09/07/2010 - 14:15:53: [random.amxx] Mapcycle! 5
L 09/07/2010 - 14:15:53: [random.amxx] 	4
L 09/07/2010 - 14:15:53: [random.amxx] 	los = 4

Teraz żadnego errora nie wywaliło
Jak widać czas mapy na serwerze ustawiłem 1 aby prędzej zmieniało mapę :)
Oraz plugin nazwałem "random" abym nie musiał co chwilę ich podmieniać :)

Dziwi mnie tylko 1 sprawa skąd w nocnym cyklu znalazła się mapa

L 09/07/2010 - 14:10:41: -------- Mapchange to de_piranesi --------

Chociaż to zdarza się bardzo źadko więc za błąd tego bym nie uznawał
I tylko chyba na początku gdy serwer przechodzi z dziennego na nocy

Jak mój nocny wygląda tak
de_train
de_nuke
cs_militia
de_inferno
1hp
Użytkownik Sunfer edytował ten post 07.09.2010 13:50
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 07.09.2010

Logi są w porządku. Mapy są losowane z pliku określonego cvar mapcyclefile, więc przy piranesi cvar jeszcze był na day.

Potrzeba jeszcze coś poprawić czy mogę uznać, że sprawa zakończona?
Odpowiedz

  • +
  • -
Sunfer - zdjęcie Sunfer 07.09.2010

Myślę że jak nie wywala tego błędu już przy nocnym to sprawa skończona gdyby coś kiedyś było jeszcze nie tak to odezwę się tutaj :P

To w poprawionej wersji teraz w logach zawsze będzie ??
L 09/07/2010 - 14:15:52: -------- Mapchange to de_inferno --------
L 09/07/2010 - 14:15:53: [random.amxx] Mapcycle! 5
L 09/07/2010 - 14:15:53: [random.amxx] 	4
L 09/07/2010 - 14:15:53: [random.amxx] 	los = 4
Chociaż to w niczym nie przeszkadza :P Ale tak z ciekawości pytam

Oraz pytanko w twoim poprzednim poście gdzieś tam wyżej SMA jest już dobre bo chce dać link do kumpla aby to ściągnął
Użytkownik Sunfer edytował ten post 07.09.2010 16:41
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 07.09.2010

Poprawiona wersja sma bez wypisywania tych informacji jest w poście #6 Prośba o napisanie "Random next map" - Nieoficjalny polski support AMX Mod X
Odpowiedz
Zablokowany