Jump to content
  • 0

pomoc Vehicle dealership


Meric

Dotaz

Ahoj, zdravím všechny pawnery.
 
Potřeboval bych pomoc ohledně vehicle systému, který by se použil na RP game mód, který si pro vlastní zábavu tvořím a zasekl jsem se u tohoto. Nemám vůbec žádnou teorii o tom, jak to nakódovat. Systém by měl "spawnovat" a mazat vozidla, jakožto ve výběrovém menu s možností vybrat barvy vozidla a s náhodným přidělováním SPZ, kvůli policejní databázi. Samozřejmě k tomu něco jako "systém vlastnictví". Vůbec nemám páru, jak to nakódovat, přemýšlel jsem nad tím hodiny, 
 
A rovnou bych se chtěl zeptat i na to, proč se mi třeba u vysílačky zobrazuje asi jenom odhadem 30 znaků a více se tam nevejde? Dělal jsem to přes funkci format a po 150ti úpravách byl výsledek stejný. Poradí mi někdo, prosím?

 

 

 

Edited by Meric
Link to comment
Share on other sites

5 odpovědí na tuto otázku

Recommended Posts

  • 0
  • Hlavní moderátor

Ahoj, pokud to má být systém vlastnictví, bude potřeba to někam ukládat. Všechny věci, co chceš nastavovat, mají své funkce (barva - SetVehicleColor, SPZ - SetVehicleNumberPlate atd.). Náhodnou SPZ si můžeš vygenerovat např. takto.

 

Co se týče tvého druhého problému, tak to nejspíše bude nedostatečnou délkou řetězce. Zkus tomu dát víc jak 128, ale mysli na to, že SCM nemůže odeslat více jak 144 znaků (velikost řetězce 145).

Link to comment
Share on other sites

  • 0

Trošku jsem ti poupravil kód, co se týče dlouhých zpráv, tak budeš muset najít nějakou fci. Pokud nenajdeš, tak napiš SZ. Jinak pokud najdu čas, tak bych ti něco s těma autama mohl načrtnout.

 

 

CMD:v(playerid, params[]) return cmd_vysilacka(playerid, params);
CMD:vysilacka(playerid, params[])
{
    new text[128];
    if(sscanf(params, "s", text)) return SendClientMessage(playerid, -1, "(( Použití: /(v)ysilacka [TEXT] ))");
	if(PlayerInfo[playerid][pFrakce] == 0 || PlayerInfo[playerid][pFrakce] == 500 )return SendClientMessage(playerid, -1, "(( Tento příkaz nemůžete používat! ))"); //pomocí operátoru || (nebo) udělám z tvých dvou rozvynutých podmínek dohromady na 10 řádků takhle krátkou
 	if(PlayerInfo[playerid][pFrakce] == 1 || PlayerInfo[playerid][pFrakce] == 2)//nevím jestli náhodou nemáš víc frakcí, pokud ne, tak můžeš tuhle podmínku úplně smazat (Tady jinak stačilo zase použít operátor || a změnit podmínku v cyklu - určitě sis všiml, že se ty dva kódy až moc podobají)
  	{
   		new str[100+1], str1[100+1];
   		format(str, sizeof(str), "%s říká do vysílačky: %s", JmenoHrace(playerid), text);//Výpočet: 144(max, co se může odeslat) - 24 (max. délka jména) - 20 (použítý text) = takže můžeš využít cca 100 znaků pro zprávu. 
   		format(str1, sizeof(str1), "[VYSÍLAČKA]: %s (( %s ))", text, JmenoHrace(playerid));//nechápu pointu toho využití ProxDetectoru, když beztak zprávu (sice trochu jinou, každopádně někomu se pošle 2x) potom pošleš všem ze stejné frakce ať jsou nebo nejsou v okruhu 20 m...
   		ProxDetector(20.0, playerid, str, 0xFFFFFFFF, 0xD4D4D4FF, 0xAAAAAAFF, 0x7F7F7FFF, 0x555555FF);

		for(new i =0, j = GetPlayerPoolSize(); i < j; i++)//použijeme GetPlayerPoolSize() - méně to vytěžuje tvůj server
		{
			if(IsPlayerConnected(i))
			{
				if(PlayerInfo[i][pFrakce] == PlayerInfo[playerid][pFrakce])//pokud se shoduje frakce se hráčem, který použil tu vysílačku
				{
					SendClientMessage(i, 0xA3C2F8FF, str1);
				}
			}
		}
	}
    return 1;
} 

 

 

Edited by GaRGoyLeS
Link to comment
Share on other sites

  • 0

 

 

Ahoj, pokud to má být systém vlastnictví, bude potřeba to někam ukládat.

Systém ukládání mám, tam ukládám i skiny, pohlaví a tak dále. :) Jen nevím co přesně bych tam měl uložit.

 

 

Všechny věci, co chceš nastavovat, mají své funkce (barva - SetVehicleColor, SPZ - SetVehicleNumberPlate atd.). Náhodnou SPZ si můžeš vygenerovat např. takto.

Ty funkce znám, ty jejich názvy, ale nevím jakou by měly mít posloupnost v kódu, jak by to mělo vypadat, navíc tam musí být desítky jiných funkcí + definice, Bohužel nevím jaké jiné funkce .. :/

Trošku jsem ti poupravil kód, co se týče dlouhých zpráv, tak budeš muset najít nějakou fci. Pokud nenajdeš, tak napiš SZ. Jinak pokud najdu čas, tak bych ti něco s těma autama mohl načrtnout.

Díky moc, zkusím, na to přijít, ale když na to nepřijdu, tak napíšu. :) Jinak jak ses ptal na tu pointu ProxDetectoru, to nemělo patřit k tomu "[VYSÍLAČKA] ....", ale k tomu "říká do vysílačky" :) Jestli je to chyba a mám to dát mezi to, tak to upravím.. :)

 

Co se ještě týče toho vehicle systému, tam je ten problém, že nevím co všechno tam mám dávat a v jaké posloupnosti, včetně náhodného generování SPZ v určitém tvaru po zakoupení a před spawnutím, třeba "XY 43Z" :) Ten vehicle systém, jsem v tom strašně skeptický a nevím vůbec jak na to. Jsem v pawnu ještě v podstatě nováček a věnuji se tomu ve volném čase, kterýho příliš nemám. :/

Link to comment
Share on other sites

  • 0

Tady jsem ti napsal stock na dlouhé zprávy, původně byl od Miki. Ale jelikož, tam měl spoustu zbytečností a zprávu to rozdělilo natvrdo nehledě na to jestli byl konec slova nebo ne... takže se dá říct, že jsem ho komplet předělal. ;)

#define MAX_CHARS_PER_LINE 80 //někam nahoru do módu
stock SendLongMessage( playerid , color , message[] ) //kamkoliv mimo v módu (do do callbacků  )
{
	new len = strlen(message),
	loop = len / MAX_CHARS_PER_LINE;

	if( ( len % MAX_CHARS_PER_LINE ) ) loop++;
	new _Line[MAX_CHARS_PER_LINE + 10];
	new gap, end start = 0;
	for(new index = 0; index < loop; index++)
	{
		gap = strfind(message, " ", true, (MAX_CHARS_PER_LINE - 10) * (index + 1));
		end = (gap != -1) ? (gap + 1) : (len);
		strmid( _Line, message, start, end);
		start = end;
		SendClientMessage( playerid, color, _Line );
	}
	return 1;
}

//Edit: Co se týče té pointy ProxDetectoru, tak tím nemyslím, že to máš špatně umístěné či co, ALE zpráva se ti vypíše nejspíše všem hráčům na server (neviděl jsem tu fci proxdetextor, takže nevím) a zároveň se podruhé vypíše všem členům z tvé frakce (včetně tebe), sice trochu jinak naformátovaná, ale bude sdělovat stejnou zprávu. ;) Ale chyba to není, co já vím, třeba to tak chceš. ;)

Edited by GaRGoyLeS
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...