Jump to content

script [0/10] Event System a Radio + PWN [Hodnocení][R0cky]


Scydo

Recommended Posts

SKEAKYEVIL.PWN - EVENT, RADIO SCRIPT

 

Zdravím. Po nedávné... takové zajímavé rozpravě z jedním z uživatelů na tomto fóře, se rozhodl(ten uživatel) nám dát do rukou "jeho" "script", který podle jeho vlastních informací, on sám vytvořil.

 

Ale já, a velká většina lidí určitě bude souhlasit, že toto nemůže být na 100% jeho práce. Nechci se již zdržovat s hledáním podobných kódů, či stejných kódů. Na to tu jsou jiní odborníci (Xogos). Potvrdil to hlavně "jeho" zveřejněným gamemodem, který nebyl nic více než jen zkopírovaný návod na y_ini a nebo neustálím zakládáním help topiců.

Bohužel. Patřičný uživatel již na to zveřejnil topic akorát ho zamkl a doufá, že mu to nikdo nemůže zkritizovat (ale ani pochválit), tož je taky jeden z důvodů proč zakládám tento topic. Aby jste i vy mohli říct kritiku/pochvalu tomuto "scriptu".... Máme právo svobodného projevu podle článku 10 viz. úmluva o ochraně lidských práv a základních svobod:

 

 

 

ČLÁNEK 10

Svoboda projevu

1. Každý má právo na svobodu projevu. Toto právo zahrnuje

svobodu zastávat názory a přijímat a rozšiřovat informace nebo

myšlenky bez zasahování státních orgánů a bez ohledu na hranice.

Tento článek nebrání státům, aby vyžadovaly udělování povolení

rozhlasovým, televizním nebo filmovým společnostem.

2. Výkon těchto svobod, protože zahrnuje i povinnosti a

odpovědnost, může podléhat takovým formalitám, podmínkám,

omezením nebo sankcím, které stanoví zákon a které jsou nezbytné

v demokratické společnosti v zájmu národní bezpečnosti, územní

celistvosti nebo veřejné bezpečnosti, ochrany pořádku a předcházení

zločinnosti, ochrany zdraví nebo morálky, ochrany pověsti nebo

práv jiných, zabránění úniku důvěrných informací nebo zachování

autority a nestrannosti soudní moci

 

Zdroj: http://www.echr.coe.int/Documents/Convention_CES.pdf

 

Abych se vyhnul vaším příspěvkům například typu: "ty ho tímhle jenom shazuješ", nebo "jsi akorát hejter", tak jsem si dovolil přidám sem ocitovanou zprávu od jiného uživatele, který již dělal něco podobného. Přidal takové upozornění, se kterým sympatizuji, a doufám, že vy budete také:

Uvědomte si prosím, že kritika sama o sobě není nic záporného a je velice významná. Bez ní bychom se nikam neposunuli. Omlouvám se předem všem, koho se tento topic nějak nepříjemně dotkne.

Tak, nebudu to už zbytečně zdržovat, a pustíme se rovnou do toho. Jako první, čeho si můžeme všimnou je práce s deklarováním proměnných a s preprocesorem:

 

 

 

 

#if defined FILTERSCRIPT

public OnFilterScriptExit()
{
	return 1;
}

#else

new Text:Radio1;
new Text:Radio2;
new Text:Radio3;
new Text:Radio4;
new Text:Radio5;
new Text:Radio6;
new Text:Radio7;
new Text:Radio8;
new Text:Radio9;
new Text:Event;
new Text:Event2;
new Text:Event1M;
new Text:Event2M;
new Text:Event5M;
new Text:Event1MEGA;
new Text:EventKS;
new Text:EventLS;
new Text:EventWIN;
new Text:EventWIN2;
new Text:EventWINID;

main()
{
	print("\n----------------------------------");
	print(" Blank Gamemode by your name here");
	print("----------------------------------\n");
}

#endif

 

 

Velice zajímavé, že ano? Přidává direktivní podmínku, že v případě, že je definován "FILTERSCRIPT", tak se začne volat callback OnFilterScriptInit, a v případě, že ne, tak se teprve deklarují proměnné(a ještě main samozřejmě). Dle poznámky uncomment the line below if you want to write a filterscript, což by se dalo přeložit jako: že v případě, že děláme FS tak máme odstranit komentář že řádku pod ním... bychom tak učinili, měli bychom hromadu chyb(OBRÁZEK). Jestli to byl záměr "autora" či ne... To nikdo neví.

 

Už máte zvolené nějaké jméno gamemodu a určitě nechcete aby vám ho nějaký script přepsal? To bohužel s použitím tohoto "scriptu" máte smůlu. Hned ze začátku nám "autor" přidat fci, která přepíše jmeno GM:

 

public OnGameModeInit()
{
    SetGameModeText("Realna Zeme Rework v2.1");
V dalším kódě uživatel zřejmě neumí pracovat s polem, a proto má za každou deklarovanou proměnnou číslo, které nejspíše udává pořadí(Radio1, Radio2, Radio3...):

 

 

 

	Radio1 = TextDrawCreate(500.0, 10.0, "~y~Evropa 2 ~b~CZ");
	TextDrawLetterSize(Radio1, 0.5,1.6);
	TextDrawSetOutline(Radio1, 1);
	TextDrawUseBox(Radio1, 0);
	TextDrawBoxColor(Radio1, 0x000000AA);
	TextDrawFont(Radio1, 1);
	
	Radio2 = TextDrawCreate(500.0, 10.0, "~y~Evropa 2 ~r~SK");
	TextDrawLetterSize(Radio2, 0.5,1.6);
	TextDrawSetOutline(Radio2, 1);
	TextDrawUseBox(Radio2, 0);
	TextDrawBoxColor(Radio2, 0x000000AA);
	TextDrawFont(Radio2, 1);
	
	Radio3 = TextDrawCreate(500.0, 10.0, "~y~Radio Expres ~r~SK");
	TextDrawLetterSize(Radio3, 0.5,1.6);
	TextDrawSetOutline(Radio3, 1);
	TextDrawUseBox(Radio3, 0);
	TextDrawBoxColor(Radio3, 0x000000AA);
	TextDrawFont(Radio3, 1);
	
	Radio4 = TextDrawCreate(500.0, 10.0, "~y~Europa 2 ~b~CZ~y~/~r~SK");
	TextDrawLetterSize(Radio4, 0.5,1.6);
	TextDrawSetOutline(Radio4, 1);
	TextDrawUseBox(Radio4, 0);
	TextDrawBoxColor(Radio4, 0x000000AA);
	TextDrawFont(Radio4, 1);
	
	Radio5 = TextDrawCreate(500.0, 10.0, "~y~Fun Radio");
	TextDrawLetterSize(Radio5, 0.5,1.6);
	TextDrawSetOutline(Radio5, 1);
	TextDrawUseBox(Radio5, 0);
	TextDrawBoxColor(Radio5, 0x000000AA);
	TextDrawFont(Radio5, 1);
	
	Radio6 = TextDrawCreate(500.0, 10.0, "~y~Fun Radio RnB");
	TextDrawLetterSize(Radio6, 0.5,1.6);
	TextDrawSetOutline(Radio6, 1);
	TextDrawUseBox(Radio6, 0);
	TextDrawBoxColor(Radio6, 0x000000AA);
	TextDrawFont(Radio6, 1);
	
	Radio7 = TextDrawCreate(500.0, 10.0, "~y~Europa 2 ~r~HOT");
	TextDrawLetterSize(Radio7, 0.5,1.6);
	TextDrawSetOutline(Radio7, 1);
	TextDrawUseBox(Radio7, 0);
	TextDrawBoxColor(Radio7, 0x000000AA);
	TextDrawFont(Radio7, 1);
	
	Radio8 = TextDrawCreate(500.0, 10.0, "~y~DnB Radio ~w~EN");
	TextDrawLetterSize(Radio8, 0.5,1.6);
	TextDrawSetOutline(Radio8, 1);
	TextDrawUseBox(Radio8, 0);
	TextDrawBoxColor(Radio8, 0x000000AA);
	TextDrawFont(Radio8, 1);
	
	Radio9 = TextDrawCreate(500.0, 10.0, "~y~Trap.FM ~w~EN");
	TextDrawLetterSize(Radio9, 0.5,1.6);
	TextDrawSetOutline(Radio9, 1);
	TextDrawUseBox(Radio9, 0);
	TextDrawBoxColor(Radio9, 0x000000AA);
	TextDrawFont(Radio9, 1);
	//
	
	Event = TextDrawCreate(20 ,260 , "Zacal Event:");
	TextDrawFont(Event , 2);
	TextDrawLetterSize(Event , 0.4, 2.8000000000000003);
	TextDrawColor(Event , 0x00ff00FF);
	TextDrawSetOutline(Event , 1);
	TextDrawSetShadow(Event , 1);
	
	Event2 = TextDrawCreate(20 ,260 , "Probiha Event:");
	TextDrawFont(Event2 , 2);
	TextDrawLetterSize(Event2 , 0.4, 2.8000000000000003);
	TextDrawColor(Event2 , 0x00ff00FF);
	TextDrawSetOutline(Event2 , 1);
	TextDrawSetShadow(Event2 , 1);
	
	EventWIN = TextDrawCreate(20 ,260 , "Skoncil Event:");
	TextDrawFont(EventWIN , 2);
	TextDrawLetterSize(EventWIN , 0.4, 2.8000000000000003);
	TextDrawColor(EventWIN , 0x00ff00FF);
	TextDrawSetOutline(EventWIN , 1);
	TextDrawSetShadow(EventWIN , 1);
	
	EventWIN2 = TextDrawCreate(20 ,290 , "Vyherce:");
	TextDrawFont(EventWIN2 , 2);
	TextDrawLetterSize(EventWIN2 , 0.4, 2.8000000000000003);
	TextDrawColor(EventWIN2 , 0xff0000FF);
	TextDrawSetOutline(EventWIN2 , 1);
	TextDrawSetShadow(EventWIN2 , 1);
	
	EventWINID = TextDrawCreate(20 ,310 , "Jeho ID");
	TextDrawFont(EventWINID , 2);
	TextDrawLetterSize(EventWINID , 0.4, 2.8000000000000003);
	TextDrawColor(EventWINID , 0x00ccffff);
	TextDrawSetOutline(EventWINID , 1);
	TextDrawSetShadow(EventWINID , 1);
	
	Event1M = TextDrawCreate(20 ,310 , "O 1 MILLION");
	TextDrawFont(Event1M , 2);
	TextDrawLetterSize(Event1M , 0.4, 2.8000000000000003);
	TextDrawColor(Event1M , 0xff3399FF);
	TextDrawSetOutline(Event1M , 1);
	TextDrawSetShadow(Event1M , 1);
	
	Event2M = TextDrawCreate(20 ,310 , "O 2 MILLIONY");
	TextDrawFont(Event2M , 2);
	TextDrawLetterSize(Event2M , 0.4, 2.8000000000000003);
	TextDrawColor(Event2M , 0xff3399FF);
	TextDrawSetOutline(Event2M , 1);
	TextDrawSetShadow(Event2M , 1);
	
	Event5M = TextDrawCreate(20 ,310 , "O 5 MILLIONU");
	TextDrawFont(Event5M , 2);
	TextDrawLetterSize(Event5M , 0.4, 2.8000000000000003);
	TextDrawColor(Event5M , 0xff3399FF);
	TextDrawSetOutline(Event5M , 1);
	TextDrawSetShadow(Event5M , 1);
	
	Event1MEGA = TextDrawCreate(20 ,310 , "O 1 MEGA");
	TextDrawFont(Event1MEGA , 2);
	TextDrawLetterSize(Event1MEGA , 0.4, 2.8000000000000003);
	TextDrawColor(Event1MEGA , 0xff3399FF);
	TextDrawSetOutline(Event1MEGA , 1);
	TextDrawSetShadow(Event1MEGA , 1);
	
	EventKS = TextDrawCreate(20 ,290 , "Kopec Smrti");
	TextDrawFont(EventKS , 2);
	TextDrawLetterSize(EventKS , 0.4, 2.8000000000000003);
	TextDrawColor(EventKS , 0xff0000FF);
	TextDrawSetOutline(EventKS , 1);
	TextDrawSetShadow(EventKS , 1);
	
	EventLS = TextDrawCreate(20 ,290 , "Let Smrti");
	TextDrawFont(EventLS , 2);
	TextDrawLetterSize(EventLS , 0.4, 2.8000000000000003);
	TextDrawColor(EventLS , 0x0066ffFF);
	TextDrawSetOutline(EventLS , 1);
	TextDrawSetShadow(EventLS , 1);
	return 1;
}

 

 

Další čeho si můžeme všimnout, že zbytečně volá callbacky, které nevyužívá:

 

 

 

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	return 1;
}

public OnPlayerRequestSpawn(playerid)
{
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	return 1;
}

public OnPlayerSpawn(playerid)
{
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
	return 1;
}

 

 

Za další máme zřejmě jakou si "ochranu" před secret příkazy pro rze. Proč "autor" přidává podmínku na každý příkaz a nepřidá na to jednoduše proměnnou s polem? Jedinou podmínkou bude moct zkontrolovat, jestli nezadal jeden z těch příkazu, ale to opět, nic takového zřejmě nezná:

 

 

public OnPlayerCommandText(playerid, cmdtext[])
{
	if (strcmp("/lann", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/rze74", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/rze8", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/atadministrator", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/atadministrace", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/zjistircon", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/restarted", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/at11zari2010", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/atrcon", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/konecned", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/maxxx", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/blable", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/repaircenzura", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/dudb", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/atadmin", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/freeadmintomas", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}

 

Právě teď jsem úplně ztracený... hned ze začátku nám "autor" do fce přidal, že gamemod, na který se tento "script" přidá, tak bude "rework"(aka něco na způsobu "předělané"), ale on nám zakazuje všechny základní příkazy v rze. Proč? Opět: To nikdo neví?...

 

 

	if (strcmp("/pujcka", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/pujcka 0", cmdtext, true, 9) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/pujcka 1", cmdtext, true, 9) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/pujcka 2", cmdtext, true, 9) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/pujcka 3", cmdtext, true, 9) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/pujcka 4", cmdtext, true, 9) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/pujcka 5", cmdtext, true, 9) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/pujcka 6", cmdtext, true, 9) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/pujcka 7", cmdtext, true, 9) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/pujcka 8", cmdtext, true, 9) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/pujcka 9", cmdtext, true, 9) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/trajekt", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/setloc", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/teleport", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/draglv", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/dragls", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/dragsf", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/stunt", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/stunt 1", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/stunt 2", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/stunt 3", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/stunt 4", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/stunt 5", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/driftsf", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/driftlv", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/driftpoust", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/ostrov", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/skatepark", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/stuntsf", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}
	if (strcmp("/bigtunel", cmdtext, true, 10) == 0)
	{
		SendClientMessage(playerid,0xCC0000FF,"[ ! ] Tento príkaz byl zablokovan!");
		return 1;
	}

 

Hned pod ním, je další "příkaz". Ale obsah je... zvláštní. Nejdříve po zadání příkazu, deklaruje proměnnou s různou hodnotou a pak jí přepne.. přidá 2 podmínky a tím skončí. Důvod existence? To nikdo neví:

	if (strcmp("/test", cmdtext, true, 10) == 0)
	{
			new rand = random(7);
			switch(rand)
			{
			case 0:
			{

			}
			case 1:
			{

			}
			case 2:
			{

			}
			}
			return 1;
    }
A nakonec v callbacku máme poslední příkaz, a to /pp. Akorát, je celý zapoznámkovaný. Což inu dobře, ale proč "autor" nepoužil /* */ ? To ani to nezná?...

 

	//if (strcmp("/pp", cmdtext, true, 10) == 0)
	//{
		//if(Port == 0)
		//{
		    //Port = 1;
		//}
		//return 1;
	//}
	//if (strcmp("/pop", cmdtext, true, 10) == 0)
	//{
		//if(Port == 0)
		//{
		    //SendClientMessage(playerid,0xFFFFFFFF,"PORT JE ZATVOREN");
		//}
		//if(Port == 1)
		//{
		    //SendClientMessage(playerid,0xFFFFFFFF,"PORT JE OTVOREN");
		//}
		//return 1;
	//}
No, v callbacku raději skončíme a pokračujme na callback OnPlayerEnterVehicle. První co mě zarazí je neskutečný "spam" fcí TextDrawHideForPlayer:

 

 

					TextDrawHideForPlayer(playerid, Radio1);
					TextDrawHideForPlayer(playerid, Radio2);
					TextDrawHideForPlayer(playerid, Radio3);
					TextDrawHideForPlayer(playerid, Radio4);
					TextDrawHideForPlayer(playerid, Radio5);
					TextDrawHideForPlayer(playerid, Radio6);
					TextDrawHideForPlayer(playerid, Radio7);
					TextDrawHideForPlayer(playerid, Radio8);
					TextDrawHideForPlayer(playerid, Radio9);
    				TextDrawShowForPlayer(playerid, Radio1);
Chcete vědět, kolik jich přesně je v celém "scriptu"? Nepočítejte, udělám to za vás, a to přesně 251. Hrůza! Fuj!... Tady mohl krásně na to využít "autor" pole a cyklem a zkrátilo by se to alespoň na pouhých pár desítek, ale to bohužel nezná... Snad vám je tady nebudu muset všechny vypisovat. To raději skočíme až na callbacky "autora":

 

 

 

forward EventREADY1M(playerid);
forward EventREADY2M(playerid);
forward EventREADY5M(playerid);
forward EventREADY10M(playerid);

public EventREADY1M(playerid)
{
    TextDrawShowForAll(Event);
    TextDrawShowForAll(EventKS);
    TextDrawShowForAll(Event1M);
    EventWarp = 1;
    EventON = 1;
    SetTimerEx("EventSTARTING",25000,false,"i",playerid);
	SendClientMessageToAll(COLOR_CYAN,"[ ! ] Práve začal Event zapoj sa príkazem: /event");
}

public EventREADY2M(playerid)
{
    TextDrawShowForAll(Event);
    TextDrawShowForAll(EventKS);
    TextDrawShowForAll(Event2M);
    EventWarp = 1;
    EventON = 1;
    SetTimerEx("EventSTARTING",25000,false,"i",playerid);
	SendClientMessageToAll(COLOR_CYAN,"[ ! ] Práve začal Event zapoj sa príkazem: /event");
}

public EventREADY5M(playerid)
{
    TextDrawShowForAll(Event);
    TextDrawShowForAll(EventKS);
    TextDrawShowForAll(Event5M);
    EventWarp = 1;
    EventON = 1;
    SetTimerEx("EventSTARTING",25000,false,"i",playerid);
	SendClientMessageToAll(COLOR_CYAN,"[ ! ] Práve začal Event zapoj sa príkazem: /event");
}

public EventREADY10M(playerid)
{
    TextDrawShowForAll(Event);
    TextDrawShowForAll(EventLS);
    TextDrawShowForAll(Event1MEGA);
    EventWarp = 2;
    EventON = 1;
    SetTimerEx("EventSTARTING",25000,false,"i",playerid);
	SendClientMessageToAll(COLOR_CYAN,"[ ! ] Práve začal Event zapoj sa príkazem: /event");
}

forward EventREADY1ML(playerid);
forward EventREADY2ML(playerid);
forward EventREADY5ML(playerid);
forward EventREADY10ML(playerid);

public EventREADY1ML(playerid)
{
    TextDrawShowForAll(Event);
    TextDrawShowForAll(EventLS);
    TextDrawShowForAll(Event1M);
    EventWarp = 2;
    EventON = 1;
    SetTimerEx("EventSTARTING",25000,false,"i",playerid);
	SendClientMessageToAll(COLOR_CYAN,"[ ! ] Práve začal Event zapoj sa príkazem: /event");
}

public EventREADY2ML(playerid)
{
    TextDrawShowForAll(Event);
    TextDrawShowForAll(EventLS);
    TextDrawShowForAll(Event2M);
    EventWarp = 2;
    EventON = 1;
    SetTimerEx("EventSTARTING",25000,false,"i",playerid);
	SendClientMessageToAll(COLOR_CYAN,"[ ! ] Práve začal Event zapoj sa príkazem: /event");
}

public EventREADY5ML(playerid)
{
    TextDrawShowForAll(Event);
    TextDrawShowForAll(EventLS);
    TextDrawShowForAll(Event5M);
    EventWarp = 2;
    EventON = 1;
    SetTimerEx("EventSTARTING",25000,false,"i",playerid);
	SendClientMessageToAll(COLOR_CYAN,"[ ! ] Práve začal Event zapoj sa príkazem: /event");
}

public EventREADY10ML(playerid)
{
    TextDrawShowForAll(Event);
    TextDrawShowForAll(EventLS);
    TextDrawShowForAll(Event1MEGA);
    EventWarp = 2;
    EventON = 1;
    SetTimerEx("EventSTARTING",25000,false,"i",playerid);
	SendClientMessageToAll(COLOR_CYAN,"[ ! ] Práve začal Event zapoj sa príkazem: /event");
}

 

 

Takže, pokud jsem to správně pochopil z fci, kde tyto fce volá, tak každý tento callback nám spustí event o dané výhře 1mega, 5mega, 10mega a tak dále... Ne jenom, že uživatel nemá možnost si tedy vepsat vlastní výhru, ale proč to "autor" řeší tak zbytečně blbě? Stačí deklarovat jedinou promměná a jediný callback... a on jako řešení volá hned 8 callbacků. Peuu... To samé udělal i se startem těch eventů:

 

 

 

forward EventSTARTING5(playerid);

public EventSTARTING5(playerid)
{
	if(EventS[playerid] == 1)
	{
		SetTimerEx("EventSTARTING4",1000,false,"i",playerid);
		SendClientMessageToAll(0xCC0000FF,"[ ! ] Event začína za 5 sekund.");
	}
	if(EventS[playerid] == 2)
	{
		SetTimerEx("EventSTARTING4",1000,false,"i",playerid);
		SendClientMessageToAll(0xCC0000FF,"[ ! ] Event začína za 5 sekund.");
	}
}

forward EventSTARTING4(playerid);

public EventSTARTING4(playerid)
{
	if(EventS[playerid] == 1)
	{
		SetTimerEx("EventSTARTING3",1000,false,"i",playerid);
		SendClientMessageToAll(0xCC0000FF,"[ ! ] Event začína za 4 sekund.");
	}
	if(EventS[playerid] == 2)
	{
		SetTimerEx("EventSTARTING3",1000,false,"i",playerid);
		SendClientMessageToAll(0xCC0000FF,"[ ! ] Event začína za 4 sekund.");
	}
}

forward EventSTARTING3(playerid);

public EventSTARTING3(playerid)
{
	if(EventS[playerid] == 1)
	{
		SetTimerEx("EventSTARTING2",1000,false,"i",playerid);
		SendClientMessageToAll(0xCC0000FF,"[ ! ] Event začína za 3 sekund.");
	}
	if(EventS[playerid] == 2)
	{
		SetTimerEx("EventSTARTING2",1000,false,"i",playerid);
		SendClientMessageToAll(0xCC0000FF,"[ ! ] Event začína za 3 sekund.");
	}
}

forward EventSTARTING2(playerid);

public EventSTARTING2(playerid)
{
	if(EventS[playerid] == 1)
	{
		SetTimerEx("EventSTARTING1",1000,false,"i",playerid);
		SendClientMessageToAll(0xCC0000FF,"[ ! ] Event začína za 2 sekund.");
	}
	if(EventS[playerid] == 2)
	{
		SetTimerEx("EventSTARTING1",1000,false,"i",playerid);
		SendClientMessageToAll(0xCC0000FF,"[ ! ] Event začína za 2 sekund.");
	}
}

forward EventSTARTING1(playerid);

public EventSTARTING1(playerid)
{
	if(EventS[playerid] == 1)
	{
		SetTimerEx("EventSTARTING0",1000,false,"i",playerid);
		SendClientMessageToAll(0xCC0000FF,"[ ! ] Event začína za 1 sekund.");
	}
	if(EventS[playerid] == 2)
	{
		SetTimerEx("EventSTARTING0",1000,false,"i",playerid);
		SendClientMessageToAll(0xCC0000FF,"[ ! ] Event začína za 1 sekund.");
	}
}

forward EventSTARTING0(playerid);

public EventSTARTING0(playerid)
{
	if(EventS[playerid] == 1)
	{
		SendClientMessageToAll(COLOR_GREEN,"[ ! ] START ||| START ||| START [ ! ]");
		EventS[playerid] = 0;
	}
	if(EventS[playerid] == 2)
	{
		SendClientMessageToAll(COLOR_GREEN,"[ ! ] START ||| START ||| START [ ! ]");
		EventS[playerid] = 0;
	}
}

 

 

No rozebírát všechny chyby by bylo na hodiny... A na konec tu máme callback, který se zřejmě volá po příchodu na server. Opět "autor" zřejmě neumí pracovat s cyklem:

 

 

 

forward Connect(playerid);

public Connect(playerid)
{
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	SendClientMessage(playerid,-1,"");
	//

 

 

 

Hodnotím 1/10 za shanu+za snahu skrýt okopírovaný zdrojový kód...

 

Grafické zpracování inspirováno(červená velká písmena) uživatelem Lukasz.

INFO Slova, která jsou v uvozovkách značí pochyby... například "autor" značí, že člověk, který dělal na tomto scriptu, zcela zřejmé nezpracoval celý script sám na 100%, či "script", zase značí pochyby o správném zpracování scriptu.

"Autorem" tohoto "scriptu" je R0cky. Script naleznete zde: http://pawno.cz/topic/53154-event-system-a-radio-pwn/

Link to comment
Share on other sites

Pointa tohoto příspěvku, rozhodně žádná, vážně nemáš co dělat, že hodnotíš tvorbu jiných, ještě takto hloupě, např. to že si někdo nechá v zdrojáku prázdné callbacky neznamená, že tam jsou zbytečně, mimochodem volají se tak i tak. To že tam má testovací příkaz nebo, že si poznámkuje po řádku, tak třeba zapomněl nebo neví jak udělat poznámku jinak. Mimochodem píše se cyklem né cyklusem

Link to comment
Share on other sites

Pointa tohoto příspěvku, rozhodně žádná, vážně nemáš co dělat, že hodnotíš tvorbu jiných, ještě takto hloupě, např. to že si někdo nechá v zdrojáku prázdné callbacky neznamená, že tam jsou zbytečně, mimochodem volají se tak i tak. To že tam má testovací příkaz nebo, že si poznámkuje po řádku, tak třeba zapomněl nebo neví jak udělat poznámku jinak. Mimochodem píše se cyklem né cyklusem

a tvůj příspěvek má snad taky pointu?

Link to comment
Share on other sites

Co se tyce prazdnych callbacku, tak v nich problem nevidim. Protoze se sa-mp server stejne se je vzdy snazi vyvolat, tak je jedno jestli si ho tam napises nebo ne. A mam zato ze si sa-mp nic "necashuje".

 

Kazdopadne to ze ten kdo psal ten kod nepouziva pole nebo cykly. Tak rozhodne to bude tim ze to neumi. Ale z druheho hlediska pro beh kodu je to rychlejsi. Ovsem pro napsani je to vylozene debilni :) Ovsem u kodu ktere jsou casove narocne se nekdy vyplati to takto debilne rozepsat, protoze pak tim docilime rychlejsiho kodu. Ovsem v tomto konkretnim pripade je zatez tak minimalni ze si klidne mohl dovolit to do cyklu napsat.

Link to comment
Share on other sites

Pointa tohoto příspěvku, rozhodně žádná, vážně nemáš co dělat, že hodnotíš tvorbu jiných, ještě takto hloupě, např. to že si někdo nechá v zdrojáku prázdné callbacky neznamená, že tam jsou zbytečně, mimochodem volají se tak i tak. To že tam má testovací příkaz nebo, že si poznámkuje po řádku, tak třeba zapomněl nebo neví jak udělat poznámku jinak. Mimochodem píše se cyklem né cyklusem

~> Pointa je zcela zřejmá. "Autor" ignoroval naše rady, aby se naučil pawn pořádně. Ignoroval i rady, jak to vylepšit a aby to nebylo málo, tak ještě zamkl topic, kde ten "script" zveřejnil... jak se tedy dozví názory na ten "script"? Uživatelé sem publikovávají script za účelem, aby zjistili názor ostatních. Patří mezi to myšlenky, pochvaly, uznání ale i kritika a ukázky lepší varianty. Když to okamžitě zamkne, tak kde zase je pointa u něj? Celý tenhle topic má hned 2 pointy. Za 1. poukázat na až pitomé chyby, kteří neustále někteří nováčky dělají a neumí se poučit, ale hlavně ignorují uživatele, co jim radí a za 2. aby každý na tomto fóře mohl ho ohodnotit(hned ze začátku topicu mám napsáno snad dost informací ohledně toho...).

~> O to tady taky jde... hodnotit ostatních práci. By mě zajímalo, jakou vypadá ta tvoje představa, že nikdo tady nikoho nebude hodnotit a fórum se bude rozkvétat a všichni se budou zdokonalovat a zdokonalovat v daném prog. jazice či jiných oborech...

~> Nepsal jsem, že je to problém nebo chyba, že volá prázdné callbacky... ale, že je to zbytečné. Pak je to horší v přehlednosti...(edited)

~> Ten testovací příkaz... to ani nepotřebuje komentář. A pochybuji, že na to jen tak zapomněl(i když v tom tisíci+ řádkovém(i když jde udělat sotva na pár stovek) scriptu bych se až tak nedivil).

~> Zajímavé, že ví, jak se přepíná proměnná, přidává direktivní podmínku, přidávat random hodnotu ale neví o víceřádkovým poznámkách, což je snad ukázáno v každém druhém topicu "[TUT] Začínáme s PAWN" ? Docela blbost, že "zapomněl" nebo že to neví...

 

jak se již ptal kolega nade mnou... kde je zase pointa v tvém příspěvku?

Link to comment
Share on other sites

  • Hlavní moderátor

Prvně bych měl zmínit, že téma má pointu – každý by měl mít právo se ke scriptu vyjádřit, jinak totiž nemá cenu ani zakládat téma. Dokonce si myslím, že podobné "kritiky" (jak bych tomu teda já zrovna neříkal, protože kritika by měla zachycovat jak negativní, tak pozitivní prvky díla) rozpoutaly něco, čeho by se vedení a moderátorský tým měli chytnout – rozvedu na konci.

 

Nejprve ale k tomu, co SkiBig napsal. Něco z toho je podstatné a dá se tomu scriptu vytknout (změna názvu módu, testovací příkaz, který může použít jakýkoliv hrát atd.). Pak jsou tu věci, o kterých já osobně si myslím, že jsou jen rýpání. Mluvím třeba o těch callbacích navíc – ano, jsou tam nadbytečné, ale i ve výchozím souboru new.pwn tam jsou a je to běžné, že je tam nováčci nechávají. To s příkazem /event (než to SkiBig smazal) totéž.

 

R0cky, hodně věcí tam jde udělat lépe, SkiBig na některé poukázal (práce s polem), sice ti je zrovna nevysvětlil, no budiž. Já tě teda odkážu na návody na místním fóru nebo na tomto fóru. Myslím si, že lepší návody než na těchto dvou fórech v češtině momentálně nenajdeš, určitě si projeď obě dvě ty sekce. Hodnotit ti to nebudu, ale nula by to určitě nebyla.

 

Teď k moderátorům a admin teamu. Na začátku jsem psal o tom, že podobná témata něco rozpoutala. Na co jsem narážel? Na to, že ve scriptech by se měl udělat pořádek. Podobný pořádek jako v návodech. Měla by  být založena dvě podfóra, v jednom by se zveřejňovaly práce nováčků a ve druhém seriózní práce pokročilých. Proč? Protože když sem pak někdo přijde (nováček), nemá absolutně ponětí o kvalitě toho, co stahuje. Pak samozřejmě vzniká problém, z toho, co stáhne, se naučí blbé postupy a zhovadilosti. Když se kvalita může určovat u návodů, nedá se to i u scriptů?

Edited by vEnd
  • Líbí se mi to! (+1) 3
Link to comment
Share on other sites

Kyberšikana (též kybernetická šikanapočítačová šikana či cyberbullying) je druh šikany, který využívá elektronické prostředky, jako jsou mobilní telefonye-mailypagery,internetblogy a podobně. Řada jejích projevů může spadat do oblasti kriminálních činů. Její nejobvyklejší projevy představuje zasílání obtěžujících, urážejících či útočných mailů aSMS, vytváření stránek a blogů dehonestujících ostatní, popřípadě může kyberšikana sloužit k posilování klasických forem šikany, nejčastěji prostřednictvím nahrání scény na mobilní telefon a jejího následného rozeslání známým dotyčného, popřípadě prostřednictvím vystavení na internetu. Zejména poslední varianta šikany může být extrémně nebezpečná – pokud se spojí s nějakou velmi ponižující situací, takovéto zveřejnění ponižujících materiálů obrovskému množství lidí (které nejde vzít zpět) mnohonásobně zvyšuje utrpení a trauma oběti, což na ni může mít extrémně neblahý dopad.

 

jojo... kyber :kappa:  šikana :kappa: 

Link to comment
Share on other sites


Další čeho si můžeme všimnout, že zbytečně volá callbacky, které nevyužívá:

 

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	return 1;
}

public OnPlayerRequestSpawn(playerid)
{
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	return 1;
}

public OnPlayerSpawn(playerid)
{
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
	return 1;
}

 

 

A muzes mi rict, kde ty callbacky jako vola? Jedine co vidim, je jejich prazdna implementace, ktera nema na dopad vykonu kodu zadny vliv.

A v jazycych jako je C++ je pri podedeni trid dokonce nutne implementovat abstraktni virtualni fce predka.

 

 

BTW: kritizovani prace druhych bych se na tomhle foru zdrzel. Nema to smysl.

Link to comment
Share on other sites

A muzes mi rict, kde ty callbacky jako vola? Jedine co vidim, je jejich prazdna implementace, ktera nema na dopad vykonu kodu zadny vliv.

A v jazycych jako je C++ je pri podedeni trid dokonce nutne implementovat abstraktni virtualni fce predka.

Tak po druhé: To není CHYBA, je to jen ZBYTEČNÉ. Je to dokonce i červeně vyznačené, to vám nestačí? A tohle je PAWN, ne C++, ale to jistě víš. Za celou dobu, co já pracuji s PAWN a nepřidávám prázdné callbacky se mi ještě nestalo, aby ten daný script nefungoval. Takže to tím pádem beru jako zbytečné(NE JAKO CHYBU). A dost pochybuji, že se s takovou se tomhle uživateli vůbec se povede dostat k jinému jazyku.

 

BTW: kritizovani prace druhych bych se na tomhle foru zdrzel. Nema to smysl.

~> Pointa je zcela zřejmá. "Autor" ignoroval naše rady, aby se naučil pawn pořádně. Ignoroval i rady, jak to vylepšit a aby to nebylo málo, tak ještě zamkl topic, kde ten "script" zveřejnil... jak se tedy dozví názory na ten "script"?

~> O to tady taky jde... hodnotit ostatních práci. By mě zajímalo, jakou vypadá ta tvoje představa, že nikdo tady nikoho nebude hodnotit a fórum se bude rozkvétat a všichni se budou zdokonalovat a zdokonalovat v daném prog. jazice či jiných oborech...

Link to comment
Share on other sites

Tak po druhé: To není CHYBA, je to jen ZBYTEČNÉ. Je to dokonce i červeně vyznačené, to vám nestačí? A tohle je PAWN, ne C++, ale to jistě víš. Za celou dobu, co já pracuji s PAWN a nepřidávám prázdné callbacky se mi ještě nestalo, aby ten daný script nefungoval. Takže to tím pádem beru jako zbytečné(NE JAKO CHYBU). A dost pochybuji, že se s takovou se tomhle uživateli vůbec se povede dostat k jinému jazyku.

 

 

 

Reaguju na tvoje slovo VOLA, ne zbytecne. On ty callbacky nevola, on je implementuje.

Mne zas prijde zbytecne ty callbacky smazavat pac, kdyz budu potrebovat implementovat nejakou cinnost v danem callbacku, tak si jejich implementaci budu pak googlit?

Jako, ja proti tobe nic nemam, ale kritizujes tady nekoho a sam se do toho poradne nevyznas.

Edited by サトシ
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...