Jump to content
  • 0

pomoc viackrát print() != jeden riadok


KUMA s.r.o

Dotaz

Serus, ja by som potreboval zistiť akým spôsobom zobraziť viacero príkazmy text na jednom riadku, som programátor Java, C++ a som zvyknutý že keď použijem print nasledovne:

int cibula = 4;
print("Janko ma ");
print(cibula);
print(" cibule.");

Tak výsledok by vyzeral takto:

Janko ma 4 cibule.

V pawne mi to ale spraví zakaždým nový riadok....

Janko ma
4
cibule.

Skúšal som:
new cibula = 4;
print("Janko ma ");
new tmp[16];
format(tmp, 16, "\b%i", cibula);
print(tmp);
print("\b cibule.\n");

Ale výsledok je rovnaký očividne sampkovy server nevie do konzoli vpisat BACKSPACE :(((
 

poraďte prosím, totiž mám CUF, a píšem s printc(color, txt[]) farebne do konzoli chcel som si spravit funkciu co by zobrazovala v jednom riadku aj viac farieb :)
Napr.: ConsoleMsg("§aLoading §bgamemode §cv1.0")  §a - zelena farba  §b - modra farba  §c - cervena farba

public ConsoleMsg(txt[]) {
	new clr = 0xf;
	new c[2];
	for (new i = 0; i < strlen(txt); i++) {
		if (txt[i] == '\0') return;
		if (txt[i] == '§') {
			if (i == strlen(txt)-1) return;
			i++;
			switch (txt[i]) {
				case '0': clr = 0x0;
				case '1': clr = 0x1;
				case '2': clr = 0x2;
				case '3': clr = 0x3;
				case '4': clr = 0x4;
				case '5': clr = 0x5;
				case '6': clr = 0x6;
				case '7': clr = 0x7;
				case '8': clr = 0x8;
				case '9': clr = 0x9;
				case 'a': clr = 0xa;
				case 'b': clr = 0xb;
				case 'c': clr = 0xc;
				case 'd': clr = 0xd;
				case 'e': clr = 0xe;
				case 'f': clr = 0xf;
			}
		}
		else {
			c[0] = txt[i];
			printc(clr, c);
		}
	}
}

Funkcia funguje správne až na to že každý znak vypíše o riadok nižšie ....

Edited by KUMA s.r.o
Link to comment
Share on other sites

20 odpovědí na tuto otázku

Recommended Posts

  • 0

Ja viem že printf zobrazí jeden riadok to isté sa dá aj cez format(), a potom print ale ja potrebujem normálny ako je napríklad v jave a nie javový println co sa vola v pawne print() ....
 

jak mi pomoze printf() ked chcem zobrazit string po znakoch za seba forom -.-


Ja chcem proste docieliť že keď použijem ConsoleMsg("§aJanko §cma §b16 §ecibul."); vysledok bude: Janko ma 16 cibul. s tým mi nijak nepomôže printf()

Link to comment
Share on other sites

  • 0

Ja viem že printf zobrazí jeden riadok to isté sa dá aj cez format(), a potom print ale ja potrebujem normálny ako je napríklad v jave a nie javový println co sa vola v pawne print() ....

 

jak mi pomoze printf() ked chcem zobrazit string po znakoch za seba forom -.-

Ja chcem proste docieliť že keď použijem ConsoleMsg("§aJanko §cma §b16 §ecibul."); vysledok bude: Janko ma 16 cibul. s tým mi nijak nepomôže printf()

u console neuděláš barvy, alespon toto jsem stoho pochopil cos chtěl.. 

Link to comment
Share on other sites

  • 0

poraďte prosím, totiž mám CUF, a píšem s printc(color, txt[]) farebne do konzoli chcel som si spravit funkciu co by zobrazovala v jednom riadku aj viac farieb :)

Napr.: ConsoleMsg("§aLoading §bgamemode §cv1.0")  §a - zelena farba  §b - modra farba  §c - cervena farba

 

Takže má asi nějaký plugin na barvy.. jen ho sem nedal. Plete pátý přes devátý, jednou píše o print(..), pak o printc(..). Chtělo by to lepší vyjadřování a popis.

Link to comment
Share on other sites

  • 0

ale urobím farby mám plugin CUF, ktorý má funkciu napr: printc(0xb, "TEXT"); ktorá zobrazí do konzoli riadok TEXT
Lenže ja potrebujem na jeden riadok viac farieb, napríklad zobraziť ABCDEF lenže keď dám printc s forom ako som uviedol hore funkciu tak mi tie znaky nahádže pod seba
A

B

C

D

E

F

tak som dal do každého printc ešte pred znak symbol \b (backspace) aby vymazal riadky nižšie
A[NEWLINE]
[bACKPACE]B[NEWLINE]
[bACKSPACE]C[NEWLINE]

[bACKSPACE]D[NEWLINE]

[bACKSPACE]E[NEWLINE]

[bACKSPACE]F[NEWLINE]

 

ale nejde to \b nefunguje namiesto bacspace do konzoli napise same kraviny


Takže má asi nějaký plugin na barvy.. jen ho sem nedal. Plete pátý přes devátý, jednou píše o print(..), pak o printc(..). Chtělo by to lepší vyjadřování a popis.

Moje vyjadrovanie a popis je dobre len vaše chápanie zlé ten kód tej funkcie o ktorej je reč je tam celý vypísaný, na začiatku som riešil print a prečo zobrazuje automaticky za sebou riadok nižšie a potom som prešiel k jadru problemu vo funkcii :)

Edited by KUMA s.r.o
Link to comment
Share on other sites

  • 0

nie ten printc nevie čo je {DC0000} nevie meniť farby počas zobrazovania
printc(0xf, "{DC0000}TEXT1 {FF00FF}TEXT2");

zobrazí do konzole: {DC0000}TEXT1 {FF00FF}TEXT2

to printc má dva parametre farba a text, zobrazí text určitej farby, ja len potrebujem aby print nezobrazil /n automaticky za textom ... lebo potom keby dam:
printc(0xb,"TEXT1");

printc(0xc, "TEXT2");

by zobrazilo: TEXT1TEXT2
ale ono to sproste tam dava riadky dole za kazdym textom co zobrazi -_-
 

Edited by KUMA s.r.o
Link to comment
Share on other sites

  • 0

nie ten printc nevie čo je {DC0000} nevie meniť farby počas zobrazovania

printc(0xf, "{DC0000}TEXT1 {FF00FF}TEXT2");

 

zobrazí do konzole: {DC0000}TEXT1 {FF00FF}TEXT2

 

to printc má dva parametre farba a text, zobrazí text určitej farby, ja len potrebujem aby print nezobrazil /n automaticky za textom ... lebo potom keby dam:

printc(0xb,"TEXT1");

printc(0xc, "TEXT2");

 

by zobrazilo: TEXT1TEXT2

ale ono to sproste tam dava riadky dole za kazdym textom co zobrazi -_-

 

koukni se do sz poslal jsem ti tam jednu prasarnu kterou se stydím zobrazovat x)

Link to comment
Share on other sites

  • 0

vie tu niekto programovat Java alebo C++ ? ak ano určite chape rozdiel medzi print() a println(), lenže pawnový print je to isté čo println v jave alebo c++ -.-

Link to comment
Share on other sites

  • 0

Ne, máš špatné vyjadřování.

 

Ulehčím ti to.. to co chceš takhle neuděláš, alespoň ne přes tenhle plugin, který ti vypisuje na nový řádek jednou barvou..

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

  • 0

ja nemam zle vyjadrovanie moj kamarat je programator C++ a pozrel si to hned pochopil co chcem :d to vy ste iba pawňáci a nechápete ma lebo ja som uneverzálny C++, Java, HTML, CSS, VBS, PAWNO, BIN, GoLang

Link to comment
Share on other sites

  • 0

Jj, jsi prostě super programátor a nikdo z nás tu nedělá nic jiného než pawn. Smekám klobouk :)  :hallo: Jsi tak akorát namyšlenej a se špatným vyjadřováním. Přeji pěkný den 

  • Líbí se mi to! (+1) 4
Link to comment
Share on other sites

  • 0

Niesom špatný a ani sa nechcem povyšovať ale určite som nepovedal všetci čo sú tu vedia len pawno, iba hovorím že som dosť jasne objasnil svoj problém no nikto ho moc nechápe, myslím si že je to tým že nikto nevie z tadiaľto (z tejto témy) C++ alebo Java alebo iný OOP jazyk :/ a preto mi nikto nevie pomôcť ...


Jj, jsi prostě super programátor a nikdo z nás tu nedělá nic jiného než pawn. Smekám klobouk :)  :hallo: Jsi tak akorát namyšlenej a se špatným vyjadřováním. Přeji pěkný den 

Namyslený určite niesom zle sme sa pochopili snažil som sa vysvetliť že C++, Java programátor je schopný bez problémov porozumieť môj problém a pre vás čo neovládajú tieto jazyky príde nezmyselný :)

Link to comment
Share on other sites

  • 0

Ahoj. Umím Javu, dělám Javu pár let. Tvůj dotaz není srozumitelně napsaný. Jo a znám println() a print().

Dále tu máme Ewweho, kterej dělá céčko :o A Steam Wallet dělá Counter Strike (ehm)

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

  • 0

No ešte raz stručne sa snažím vysvetliť čo potrebujem:
V objektovo orientovaných jazykoch (t.: C++, Java ... ) je taktieť funkcia print ale je tam aj println, println z týchto jazykov robí to isté čo print v pawne,  print v týchto jazykoch zobrazuje text nakoniec predošlého resp.: zobrazí text a nejde po zbrazení o riadok nižšie, preto som mal v pawne problém moja funkcia robila v podstate stručne toto:
 

public ConsoleMsg(txt[]) {
	new clr = 0xf;
	new c[2];
	for (new i = 0; i < strlen(txt); i++) { //prejde všetky znaky z txt
	    if (txt[i] == '\0') return; //ak je koniec textu
	    if (txt[i] == '§') { //ak je aktualny znak § (znak zmeny farby
	        if (i == strlen(txt)-1) return; //ak § je na konci reťazca bude sa ignorovať
			i++; //prejde na nasledujúci znak za §
			switch (txt[i]) { //prejde vsetky kody farieb od 0 po f a ulozi hodnotu do clr (color)
			    case '0': clr = 0x0;
			    case '1': clr = 0x1;
			    case '2': clr = 0x2;
			    case '3': clr = 0x3;
			    case '4': clr = 0x4;
			    case '5': clr = 0x5;
			    case '6': clr = 0x6;
			    case '7': clr = 0x7;
			    case '8': clr = 0x8;
			    case '9': clr = 0x9;
			    case 'a': clr = 0xa;
			    case 'b': clr = 0xb;
			    case 'c': clr = 0xc;
			    case 'd': clr = 0xd;
			    case 'e': clr = 0xe;
			    case 'f': clr = 0xf;
			}
		}
		else { //ak aktualny znak je niečo iné ako §
		    c[0] = txt[i]; //zobrazí aktuálny znak
			printc(clr, c); //TU NASTAVA PROBLEM po skonceni prikazu sa zobrazi riadok nizsie co nechcem
		}
	}
}

problém nastáva vo funkcii printc() takisto ako aj print() zobrazuje po skončení výzpisu \n


chcel som vedieť ako zobraziť cez print alebo printc to je jedno backspace symbol \b aby zmazal ten \n co automaticky nastava po skončení príkazu :)


toď je všetko stále je to nezrozumiteľné ? ak áno tak ja už neviem ako inak to napísať ....


Ne, máš špatné vyjadřování.

 

Ulehčím ti to.. to co chceš takhle neuděláš, alespoň ne přes tenhle plugin, který ti vypisuje na nový řádek jednou barvou..

toto som si uvedomil ale myslel som si že keď zobrazím pred každým textom \b tak mi to napíše na ten riadok naspeť s nie nižšíe , to \b prepíše predošlé \n


no nevadí asi si naprogramujem v C++ dll vlastný plugin niečo ako CUF a dam doň native funkcie setColor(color), ConsoleMsg(txt[]) :)

Edited by KUMA s.r.o
Link to comment
Share on other sites

  • 0

Vytvor si vlastny SAMP plugin v ktorom priamo do prikazoveho riadku vypises co chces. Registruj si nasledne svoju nativnu funkciu. Takto mozes zavolat napr. 

 

printbezln("Mam ");

printbezln("malo");

printbezln(" penez.\n");

 

a dosiahnes co chces.

Edited by ZaKlaus
Link to comment
Share on other sites

  • 0
  • Hlavní moderátor

Vzkaz od Tanga, cituji:

 

"Ak vám napadá to riešiť len písaním pluginov, tak evidentne nemáte dosť skúseností ani na napísanie toho pluginu.
Google -> callback hooking Pawn
-- Tango"

Link to comment
Share on other sites

  • 0

Pobavilo :d, nie neviem, nikdy som v pawn nic nerobil a SAMP som si max. zahral. Prepac, ze som nestracal cas pri tomto jazyku.

 

Kazdopadne, ked hooknem print, akym sposobom vypisem ten posraty text do terminalu bez toho zalomenia riadka? :)

 

Odkaz mu to.

 

EDIT: Tak Tango asi zrejme myslel vypisanie textu do chatu, resp. uz len jeho rada hovori callback, co avsak s tymto problemom nic nema. KUMA chce vypisat text do terminalu servera bez zalomenia riadka, bohuzial nativna fcia v SAMP tam to zalomenie ma. Preto ako prve ma napada spravit plugin, neviem co ti pomoze hooknutie callbacku pri tom :)

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