Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 5199 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Įžanga

Sveiki, manau jau pats metas parašyti, kokią nors vertingesnę ir rečiau matomą pamoką. Šį kartą pamoka bus apie judančius grafinius tekstus kitaip dar vadinamus TextDraw'ais. ;)

Teksto sukūrimas

Lengviausias būdas kaip sukurti TextDraw'ą yra naudojantis TextDraw'ų redaktoriumi. Vienas iš jų, kurį pats naudoju, yra Zamaroht TextDraw Editor. Redaktorių pasijunkite kaip paprastą filterscript'ą. Aiškinti kaip susikurti patį TextDraw'ą manau nereikia, nes viskas redaktoriuje yra aiškiai parašyta.

Mano sukurtas TextDraw'as atrodo taip:

Paveikslėlis

Uploaded with ImageShack.us

Susikūrę tesktą, jį išsisaugome, atsijungiame iš serverio, nes mūsų darbas jame baigtas ir atsidarome serverio aplanką, scriptfiles katalogą ir ten rasime TextDraw'o failą, mano atveju jis vadinasi pamokai.txt.

Skriptinimas

Atsidarę savo TextDraw'o failą rasime kažką panašaus į:

Kodas:

// TextDraw developed using Zamaroht's Textdraw Editor 1.0

// On top of script:

new Text:Textdraw0;

// In OnGameModeInit prefferably, we procced to create our textdraws:

Textdraw0 = TextDrawCreate(1.000000, 436.000000, "GuitarHero GuitarHero GuitarHero");

TextDrawBackgroundColor(Textdraw0, 255);

TextDrawFont(Textdraw0, 2);

TextDrawLetterSize(Textdraw0, 0.300000, 1.200000);

TextDrawColor(Textdraw0, -1);

TextDrawSetOutline(Textdraw0, 1);

TextDrawSetProportional(Textdraw0, 1);

// You can now use TextDrawShowForPlayer(-ForAll), TextDrawHideForPlayer(-ForAll) and

// TextDrawDestroy functions to show, hide, and destroy the textdraw.

Pirmiausia gamemod'o viršuje susikuriame TextDraw'ui kintamąjį:

Kodas:

new

Text:judantis;

Taip pat susikuriame kintamąjį ir tekstui:

Kodas:

new

tekstas[ 128 ] = "~y~GuitarHero ~g~GuitarHero ~r~GuitarHero";

Tada susikuriame teksto pozicijos kintamąjį:

Kodas:

new

Float:pozicija = 650.0;

Susikūrus pagrindinius kintamuosius susikuriame pagrindinę funkciją:

Kodas:

public

MoveText( )

{

// Funkcija: MoveText( );

// Veikimas: Judina TextDraw'ą

pozicija -= 4.0;

if ( pozicija <= - strlen( tekstas ) * 10 )

pozicija = 650.0;

TextDrawHideForAll( judantis );

TextDrawDestroy ( judantis );

judantis =

TextDrawCreate ( pozicija, 436.0, tekstas );

TextDrawBackgroundColor( judantis, 255 );

TextDrawFont ( judantis, 2 );

TextDrawLetterSize ( judantis, 0.30, 1.20 );

TextDrawColor ( judantis, -1 );

TextDrawSetOutline ( judantis, 1 );

TextDrawSetProportional( judantis, 1 );

TextDrawShowForAll( judantis );

}

Kodas:

pozicija -= 4.0;

Per kiek tekstas pajudės į kairę pusę, šiuo atveju per 4.0.

Kodas:

if ( pozicija <= - strlen( tekstas ) * 10 )

pozicija = 650.0;

Jeigu teksto visos raidės jau nebėra matomos, "pastatome" tekstą į pradinę poziciją.

Kodas:

TextDrawHideForAll( judantis );

TextDrawDestroy ( judantis );

Paslėpiame jį ir sunaikiname seną tekstą.

Kodas:

judantis =

TextDrawCreate ( pozicija, 436.0, tekstas );

TextDrawBackgroundColor( judantis, 255 );

TextDrawFont ( judantis, 2 );

TextDrawLetterSize ( judantis, 0.30, 1.20 );

TextDrawColor ( judantis, -1 );

TextDrawSetOutline ( judantis, 1 );

TextDrawSetProportional( judantis, 1 );

Sukuriame naują tekstą. Teksto poziciją nustatome iš kintamojo pozicija, tai reiškia, kad naujas tekstas bus pasislinkęs į kairę pusę. Tekstą nustatome iš kintamojo tekstas. Pastaba: Visas TextDraw'o sukūrimo funkcijas paimame iš TextDraw'o failo, tačiau vietoje pozicijos ir teksto įrašome sukurtus kintamuosius.

Kodas:

TextDrawShowForAll( judantis );

Ir galiausiai parodome visiems žaidėjams sukurtą tekstą.

Taip pat public funkcijai privalome sukurti funkcijos prototipą, tai rašome gamemod'o viršuje:

Kodas:

forward MoveText( );

Susikuriame laikmatį (timer), kuris kas kažkiek laiko, tiksliau, kiek nurodysime, iškvies teksto judinimo funkciją:

Kodas:

public

OnGameModeInit( )

{

// Callback: OnGameModeInit( )

// Veikimas: Iškviečiamas, kai pasijungia serveris

SetTimer( "MoveText", 100, true ); // 100 yra lygu 0,1 sekundės

return true;

}

Ir galiausiai išjungus gamemod'ą, sunaikiname TextDraw'ą:

Kodas:

public

OnGameModeExit( )

{

// Callback: OnGameModeExit( );

// Veikimas: Iškviečiamas, kai išjungiamas serveris

TextDrawDestroy( judantis );

return true;

}

Viskas! Judantis TextDraw'as sėkmingai sukurtas.

Rezultatas

Komanda

Judantį tekstą galima nesunkiai pakeisti panaudojant šią komandą:

Kodas:

COMMAND:judantis( playerid, params[ ] )

{

// Komanda: /judantis

// Veikimas: Pakeičia judantį tekstą

new

result[ 256 ];

if ( sscanf( params, "s[256]", result ) )

SendClientMessage( playerid, 0xFFFFFFFF, "Naudojimas: /judantis " );

else if ( strlen( result ) > strlen( tekstas ) - 1 )

SendClientMessage( playerid, 0xFFFFFFFF, "Įrašytas tekstas yra per ilgas!" );

else

{

format( tekstas, sizeof ( tekstas ), result );

pozicija = 650.0;

}

return true;

}

Jei naudosite savo serveryje, nepamirškite pridėti if sąlygą, kad šią komandą galėtų naudoti tik administratoriai.

Pastabos ir patarimai

Nors judantys TextDraw'ai ir puiki idėja, nepatariu jų naudoti daug, nes jie apkraus serverį. Apsiribokite vienu tokiu TextDraw'u.

Taip pat pastebėjau, kad dauguma naujokų tiesiog paima ir nukopijuoja mano kodą į savo callback'us. Tai yra klaidinga, nes jei pas jus toks pat callback'as yra, Jums tereikia nukopijuoti nurodytas eilutes, pavyzdžiui:

Kodas:

TextDrawDestroy( judantis );

ar

Kodas:

SetTimer( "MoveText", 100, true ); // 100 yra lygu 0,1 sekundės

O dauguma nukopijuoja:

Kodas:

SetTimer( "MoveText", 100, true ); // 100 yra lygu 0,1 sekundės

return true;

}

Todėl Jums ir išmeta begalę error'ų.

Šis kodas yra tik pavyzdinis. Jį galite visaip patobulinti: padaryti, kad tekstą rodytų tik tam tikrą laiką ar tam tikram žaidėjui, pagreitinti (nepatariu) arba sulėtinti teksto judėjimo greitį ir kt.

Pabaiga

Tikiuosi ši pamoka buvo naudinga.

Jei gali +REP:)

Rippinta iš: gta-samp-serverio-pamokos/kuriame-judant-tekst-textdraw-t87087.html

  • Teigiamai 1

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 5199 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...