GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Leírások/Útmutatók => A témát indította: .:: ZeX ::. - 2009. December 13. - 17:44:19

Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: .:: ZeX ::. - 2009. December 13. - 17:44:19
Hosszú szöveg a párbeszédpanelbe
 
Mivel sokan teszik fel ezt a kérdést, és megtaláltam a muködoképes és tesztelt megoldást, gondolom megosztom veletek.

A titok nyitja egy nagyon parasztos, de hatékony megoldásban rejlik. Akkor lássuk is:

 
new DialogIDString[][]={
\"Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt\\n\", // Sor 1 (Az \\n kell a végére!)
\"Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt,Teszt\"
};

 
Ezzel létrehoztuk a késobb megjeleno karakterláncot...
 
new DialogString[1600]; // Az 1600 helyett a karakterek számát írd..
format(DialogString,sizeof DialogString,\"%s%s\",DialogIDString[0],DialogIDString[1]); // Szépen beágyazzuk a sorokat, ezzel átvertük a PAWN-t és nem veszi hoszúnak:D

 
Innentol magáért beszél a dolog szerintem...gyengébbek kedvéért:

A dialógus megjelenésénél a
DialogString karakterláncot használjuk szövegnek...:
 
ShowPlayerDialog(playerid,dialogid,style,caption,DialogString,button1[],button2[]);

 
Ugye nem is nehéz? Ha mégis bátran írj...Ennyi, Enjoy!
Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: ZeRo - 2009. December 13. - 18:12:34
Ezt jó ötlet volt leírni, sok embernek hasznára válhat. A DialogString vektor mérete nekem kicsit furcsa, nem hiszem hogy \'ennyire\' hosszú szöveget akarnának leírni. De ki tudja? :) Jó lett, ez a lényeg.
ZeRo
Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: .:: ZeX ::. - 2009. December 13. - 19:22:51
A cellák méretét a karakterlánc méretére állítsd.
Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: kurta999 - 2010. Január 30. - 11:24:46
Ez egy jó hülye kérdés lesz: hogy állapítod meg, hogy hány karakter ?
Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: Iceaac - 2010. Január 30. - 11:35:16
Megszámolod pl  ;D
Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: ZeRo - 2010. Január 30. - 12:21:35
strlen( string[  ] );

 
És mondjuk kiíratod a konzolba a print függvénnyel, így nem is kell megszámolnod, csak leolvasnod.
ZeRo
Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: Iceaac - 2010. Január 30. - 14:16:53
Idézetet írta: ZeRo date=1264850495\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"337\" data-ipsquote-contentclass=\"forums_Topic

strlen( string[  ] );

 
És mondjuk kiíratod a konzolba a print függvénnyel, így nem is kell megszámolnod, csak leolvasnod.
ZeRo
 
Vagy new hosszusag = strlen(string);, igaz? :P
Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: ZeRo - 2010. Január 30. - 14:19:59
Idézetet írta: Iceaac date=1264857413\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"337\" data-ipsquote-contentclass=\"forums_Topic


 
strlen( string[  ] );

 
És mondjuk kiíratod a konzolba a print függvénnyel, így nem is kell megszámolnod, csak leolvasnod.
ZeRo
 
Vagy new hosszusag = strlen(string);, igaz? :P
 
[/quote]
Még mindíg jobb, mint megszámolni.  ;)
ZeRo
Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: kurta999 - 2010. Január 31. - 20:05:40
Én ezt nemértem, írd le pls h hogyan goldolod azt a stringeset XD
De nekem már az is hosszú.....
Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: Gamestar - 2010. Január 31. - 20:22:04
Sortöréssel csináld. \\ jel és új sorban folytatod. Példa:
\"Ez most a teszt\\
karakterlánc\"
Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: kurta999 - 2010. Július 12. - 13:37:42
Na megy xD Amúgy ha DialogIDString-et használsz naggyából 20 darab után má problémázik a pawno h hosszú a format :D Ezért én csak így használom DS.
Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: krisk - 2010. Július 13. - 11:03:40
Ez ugyanolyan kis \'small but smart\' fixek mint pl az IsNull függvény, vagy az IsNAN. Nagyon ötletes!
Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: kurta999 - 2010. Július 13. - 18:17:28
Lenne egy kérdésem; ezt, h lehet úgy megcsinálni, h ne kellljen minden sort beágyazni ?
Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: szabyxxx - 2012. Január 28. - 20:06:54
és hogy csinjem meg parancsra nem értem
Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: Game94 - 2012. Január 28. - 20:19:59
Ezt mondjuk inkább a kérdésekhez kellett volna, fõleg úgy hogy több mint 1 éve nem írtak a témába..
Ez a leírás nem a Dialogok használatát mutatja be, hanem hogy hogyan lehet nagyobb karakterláncokat használni, szóval ez még off is volt.
Cím: [TUT] [UNIT] Hosszú szöveg a párbeszédpanelbe
Írta: kurta999 - 2012. Január 28. - 22:59:11
Öreg téma, de ennyit hozzátennék:
Ez a legjobb és a legegyszerûbb megoldás:
 

// Én ezt globálisan szoktam létrehozni
new const
MCHawer_1[][] =
{
!\"Bye-Bye Lány\",
!\"Száz Forintnak\",
!\"Piros Bicikli\",
!\"Lidi Néni\",
!\"Piros Volt A Paradicsom\",
!\"Eladom A Lovamat\",
!\"Lakodalom Van A Mi Utcánkban\",
!\"Végleg A Szívügyem Maradtál\",
!\"Vörösbort Ittam Az Este\",
!\"Kislány Vigyázz\",
!\"Egy Szép Nyári Este\",
!\"Mulatós Egyveleg\"
};
new
szFormatLine[4096 + 1]; // Létrehozunk globálisan 4096 cellát, amiben majd formázzuk a szöveget a dialógba. A 4096 a maximum hosszúság.
// Aztán valahova ezt belarakod a kódba, mondjuk egy parancsba.
CMD:mchawer(playerid, params[])
{
szFormatLine[0] = EOS; // Kiûrítjük
for(new i; i < sizeof(MCHawer_1); i ++)
{
strcat(szFormatLine, MCHawer_1); // Belerakjuk az strcat függvénnyel az kiválaszott sort
strcat(szFormatLine, \"\\n\"); // Utánarakjuk az \"\\n\" karaktert. Azaz új sort kezdünk.
}
ShowPlayerDialog(playerid, DIALOG_MCHAWER, DIALOG_STYLE_LIST, \"Bye-Bye Lány.\", szFormatLine, \"Play\", \"Mégse\"); // Felmutatjuk a dialógot
return 1;
}