Skocz do zawartości

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.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Próby tworzenia pluginu RockTheNextmap


  • Zamknięty Temat jest zamknięty
Brak odpowiedzi do tego tematu

#1 kalip

    Życzliwy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:24
  • Lokalizacja:lodz
Offline

Napisano 15.02.2011 15:00

Witam,
Przeglądanie internetu w poszukiwaniu pluginu, który będzie działał na zasadzie głosowania, które po określeniu warunków zmienia nam mapę na kolejną z mapcyklu, okazało się porażką :-(
W potrzebie postanowiłem stworzyć coś samemu, niestety programowanie nie jest moją mocną stroną.
Zamieszczam tutaj moje wypociny, które są połączeniem 2ch pluginów.
Niby wszystko fajnie, plugin kompiluje się, ale nie działa w grze.
Zapewne chodzi tutaj o złe umieszczenie(?) funkcji i warunków. Zrezygnowałem po 2ch godzinach prób i postanowiłem zasięgnąć pomocy specjalistów.

/* Script generated by Pawn Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN	"TimeLimit vote"
#define AUTHOR	"many"
#define VERSION	"1.0.0"

new choises[3]
new rtv[33], howmanyvotes, count, nextmap;
new howmanyvotesperc, timevote;

public plugin_init() 
{
	register_plugin("PLUGIN", "VERSION", "AUTHOR")
	register_dictionary("common.txt");
	register_clcmd("say", "rockthevote");
	howmanyvotes = 1;
	howmanyvotesperc = 30;
	timevote = 2;
}
public  client_disconnect(id)
{
	if (rtv[id-1] == id)
	{
		rtv[id-1] = 0;
		count--;
	}
}

public rockthevote(id, menu, item)
{
	new said[192];
	read_args(said, 192);
	if	((contain(said, "/rockthevote") != -1) || (contain(said, "rockthevote") != -1) || (contain(said, "rtv") != -1))
	{
		if (get_gametime() < (get_pcvar_float(timevote) * 60.0))
			client_print(id, print_chat, "Vote is currently not allowed. Wait %d minutes.", (floatround(((get_pcvar_float(timevote) * 60.0) - get_gametime()) / 60.0)));
		else
		{
			if	(rtv[id-1] == id)
				client_print(id, print_chat, "You have already voted!");
			else
			{
				rtv[id-1] = id;
				count++;
							
				static num;
				num = get_playersnum();
				num = floatround((get_pcvar_float(howmanyvotesperc) * num));
				if ((num == count) || (count >= get_pcvar_num(howmanyvotes)))
				{
		
	
				new menu = menu_create("rZmiana mapy?", "menu_handler")
				menu_additem(menu, "wTak", "1", 0)
				menu_additem(menu, "wNie", "2", 0)
				menu_addblank(menu, 0)
				menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
	
				new players[32], inum
				get_players(players, inum, "ch")
				for(new i = 0; i < inum; i++)
				{
			
			menu_display(players[i], menu, 0)
			}
	
		choises[1] = choises[2] = 0;
	
	if (item == MENU_EXIT)
			{
				menu_cancel(id)
				return PLUGIN_HANDLED
			}
	
		new data[6], name[32]
		new access, callback
	
		menu_item_getinfo(menu, item, access, data, 5, _, _, callback)
	
		new key = str_to_num(data)
		get_user_name(id, name, 31)
	
	switch (key) 
	{
		case 1: 
		{
			client_print (0, print_chat, "[AMXX] %s jest za zmiana mapy.", name);
		}
		case 2:
		{
			client_print (0, print_chat, "[AMXX] %s nie chce zmiany mapy.", name);
		}

	}
	
	++choises[key]
	
	menu_cancel(id)
	return PLUGIN_HANDLED
}

				static name[32];
				get_user_name( id, name, charsmax( name ) );
				
				client_print ( 0, print_chat, "%s vote was added. Need %d or %d^%^%  to start voting!", name, (get_pcvar_num(howmanyvotes)-count), (floatround(get_pcvar_float(howmanyvotesperc) * 100.00)))
			}
		}

	if(choises[1] > choises[2])
		{
		client_print(0, print_chat, "[AMXX] Zmiana mapy.", choises[1])
		
		server_cmd( "amx_map %s", nextmap );
		}
	
		else if(choises[2] > choises[1])
		{
		client_print(0, print_chat, "[AMXX] Mapa nie zostanie zmieniona.", choises[2])
		
		}

	}  
}

Wartości są przypadkowe jeśli chodzi o czas, ilość graczy potrzebną do rozpoczęcia vota.

Wpisuje w grze rtv, spełniam warunek 1 gracza, lecz nic dalej się nie dzieje.
Proszę o nakierowanie, ewentualnie zmiany w kodzie.
Załączam plugin, który wykorzystałem.
Drugi jest z tego postu: Voting For Timelimit - AMXX.pl: Support AMX Mod X


pozdrawiam i proszę o pomoc

Dodano 21 luty 2011 - 07:27:
podbijam

Załączone pliki


Użytkownik kalip edytował ten post 15.02.2011 15:04

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych