SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Archive

 
 
Thread Tools Display Modes
Old 30/04/2010, 08:02 AM   #1
Silent.Hunter
Little Clucker
 
Join Date: Mar 2009
Posts: 49
Reputation: 0
Default Textdraw összeakadás

Hello,
nemrég írtam egy fügvényt amit SecondLifeTXTTimer-nek kereszteltem el. Ennek a fügvénynek a használatával a képernyő alján létrehoz egy csíkot benne egy szöveggel.

Például: SecondLifeTXTTimer(playerid,"A kocsi beindításához használd: /start", 5000);
| - Maga a fügvény
| - célszemély
| - szöveg
| - megjelenítési idő milsec-ban, Ez jelen esetben 5000 - 5 másodperc.

Tehát ez a fügvény tökéletesen működik amig csak 1 játékosról van szó. Tegnap kipróbáltam a szervert több játékossal is és volt akinek egymás helyére rakódtak és volt akinek működött normálisan.... Volt hogy felváltva... A válaszokat előre is köszönöm.

Mellékeltem a forráskódot is... hátha az segít:
pawn Code:
public SecondLifeTXTTimer(playerid,szoveg[],timer)//by silenthunter
{
    if(IsPlayerConnected(playerid))
    {
      KillTimer(sltxttim);
        SecondLifeTXTDelete(playerid);
        sltxt = TextDrawCreate(txtx, txty, szoveg);
        TextDrawUseBox(sltxt , 1);
        TextDrawFont(sltxt , 1);
        TextDrawBoxColor(sltxt ,txtbox);
        TextDrawShowForPlayer(playerid, sltxt);
        sltxttim = SetTimer("SecondLifeTXTDelete", timer, 0);
    }
    return 1;
}

public SecondLifeTXTDelete(playerid)//by silenthunter
{
    if(IsPlayerConnected(playerid))
    {
        TextDrawHideForPlayer(playerid, sltxt);
    }
    return 1;
}
Silent.Hunter is offline  
Old 30/04/2010, 08:17 AM   #2
MPKaboose
High-roller
 
MPKaboose's Avatar
 
Join Date: Mar 2008
Location: Romania, Timisoara
Posts: 1,075
Reputation: 0
Default Re: Textdraw összeakadás

pawn Code:
new sltxt[ MAX_PLAYERS ],
    sltxttim[ MAX_PLAYERS ];
public OnGameModeInit( )
{
    sltxt = TextDrawCreate( txtx, txty, " " ); // ezt hagy üressen
    TextDrawUseBox( sltxt, 1 );
    TextDrawFont( sltxt, 1 );
    TextDrawBoxColor( sltxt, txtbox );
    TextDrawShowForPlayer( playerid, sltxt );
    return true;
}
public SecondLifeTXTTimer( playerid, szoveg[ ], timer ) // by silenthunter
{
    if( IsPlayerConnected( playerid ) )
    {
        TextDrawSetString( sltxt[ playerid ], szoveg );
        TextDrawShowForPlayer( playerid, sltxt[ playerid ] );
        sltxttim = SetTimerEx( "SecondLifeTXTDelete", timer, false, "i", playerid );
    }
    return true;
}
public SecondLifeTXTDelete( playerid ) // by silenthunter
{
    if( IsPlayerConnected( playerid ) )
    {
        TextDrawHideForPlayer( playerid, sltxt );
    }
    return true;
}
Te azt hibáztad el ,hogy minden játékosnak ugyan azt a timert és textdraw-ot használtad ezert keveredett ösze remélem ,hogy ez majd segít
MPKaboose is offline  
Old 30/04/2010, 08:59 AM   #3
Silent.Hunter
Little Clucker
 
Join Date: Mar 2009
Posts: 49
Reputation: 0
Default Re: Textdraw összeakadás

Megcsináltam... bár nem lett jó. Mindenkinek ugyan azt írja... pl egy játékos beül egy járműbe mindenkinek kiírja hogy "Használd: /start a motor beindításához"
És a textdraw eltorzul... vmiért más az alakja...
Silent.Hunter is offline  
Old 30/04/2010, 09:04 AM   #4
MPKaboose
High-roller
 
MPKaboose's Avatar
 
Join Date: Mar 2008
Location: Romania, Timisoara
Posts: 1,075
Reputation: 0
Default Re: Textdraw összeakadás

nos én mostan suliba megyek utána majd segítek meg oldani
MPKaboose is offline  
Old 30/04/2010, 09:34 AM   #5
Silent.Hunter
Little Clucker
 
Join Date: Mar 2009
Posts: 49
Reputation: 0
Default Re: Textdraw összeakadás

Megoldottam a problémát. Köszönöm a segítséget
Silent.Hunter is offline  
Old 30/04/2010, 12:29 PM   #6
MPKaboose
High-roller
 
MPKaboose's Avatar
 
Join Date: Mar 2008
Location: Romania, Timisoara
Posts: 1,075
Reputation: 0
Default Re: Textdraw összeakadás

Quote:
Originally Posted by Silent.Hunter
Megoldottam a problémát. Köszönöm a segítséget
Az jó hír mi volt a baj?
MPKaboose is offline  
Old 30/04/2010, 01:26 PM   #7
Silent.Hunter
Little Clucker
 
Join Date: Mar 2009
Posts: 49
Reputation: 0
Default Re: Textdraw összeakadás

Quote:
Te azt hibáztad el ,hogy minden játékosnak ugyan azt a timert és textdraw-ot használtad ezert keveredett ösze
Ezen az alapon írtam újra a rendszert...
Pédlául sltxt helyett sltxt[playerid] -t hazsnáltam. Ezáltal csak annak a játékosnak hozza létre a szöveget.

Végül kipróbáltam a te megoldásod:
pawn Code:
new sltxt[ MAX_PLAYERS ],
    sltxttim[ MAX_PLAYERS ];
public OnGameModeInit( )
{
    sltxt = TextDrawCreate( txtx, txty, " " ); // ezt hagy üressen
    TextDrawUseBox( sltxt, 1 );
    TextDrawFont( sltxt, 1 );
    TextDrawBoxColor( sltxt, txtbox );
    TextDrawShowForPlayer( playerid, sltxt );
    return true;
}
public SecondLifeTXTTimer( playerid, szoveg[ ], timer ) // by silenthunter
{
    if( IsPlayerConnected( playerid ) )
    {
        TextDrawSetString( sltxt[ playerid ], szoveg );
        TextDrawShowForPlayer( playerid, sltxt[ playerid ] );
        sltxttim = SetTimerEx( "SecondLifeTXTDelete", timer, false, "i", playerid );
    }
    return true;
}
public SecondLifeTXTDelete( playerid ) // by silenthunter
{
    if( IsPlayerConnected( playerid ) )
    {
        TextDrawHideForPlayer( playerid, sltxt );
    }
    return true;
}
Ezzel több problémám is volt.
Pédául a TextDrawSetString( sltxt[ playerid ], szoveg ); fügvény felesleges. Hisz nincs semilyen tároló amiből beolvashatná a karaktereket.
Utána az onGamodeModeInit-nél egy ilyen fügvény: TextDrawShowForPlayer( playerid, sltxt );... "Undefined symbol "playerid"... és most a logikát követve...
Az OnGamemodeInit fügvényt töbször is meghívja másodpercenként... ezért másodpercenként töbször is megjelenítené a textdrawn-t. Ez lag-hoz és egyébb kellemetlenségekhez vezethet.
Na és a TexdrawHideForPlayer fügvény kell a SecondLifeTXTTimer elejére. Ez eltünteti a korábban létrehozott TXT-t ha hamarabb jönne új üzenet mint ahogy az előző eltünne. Mivel ez egy dinamikus rendszer.

De a te kódot alapján kovácsoltam össze a jó kódot. tehát tartozom egy köszönettel

A helyes kód:
pawn Code:
public SecondLifeTXTTimer( playerid, szoveg[ ], timer ) // by silenthunter
{
    if( IsPlayerConnected( playerid ) )
    {
      TextDrawHideForPlayer( playerid, sltxt[playerid] );
//    TextDrawSetString( sltxt[ playerid ], szoveg );
      sltxt[playerid] = TextDrawCreate( txtx, txty, szoveg );
        TextDrawUseBox( sltxt[playerid], 1 );
        TextDrawFont( sltxt[playerid], 1 );
        TextDrawBoxColor( sltxt[playerid], txtbox );
        TextDrawShowForPlayer( playerid, sltxt[ playerid ] );
        sltxttim[playerid] = SetTimerEx( "SecondLifeTXTDelete", timer, false, "i", playerid );
    }
    return true;
}
public SecondLifeTXTDelete( playerid ) // by silenthunter
{
    if( IsPlayerConnected( playerid ) )
    {
        TextDrawHideForPlayer( playerid, sltxt[playerid] );
    }
    return true;
}
Silent.Hunter is offline  
Old 30/04/2010, 03:52 PM   #8
MPKaboose
High-roller
 
MPKaboose's Avatar
 
Join Date: Mar 2008
Location: Romania, Timisoara
Posts: 1,075
Reputation: 0
Default Re: Textdraw összeakadás

Quote:
Originally Posted by Silent.Hunter
Az OnGamemodeInit fügvényt töbször is meghívja másodpercenként... ezért másodpercenként töbször is megjelenítené a textdrawn-t. Ez lag-hoz és egyébb kellemetlenségekhez vezethet.
az nem igaz és a gamemodeinit alatt egy loop segítségével el készítheted egyszer minden játékosnak a textdrawot minthogy "végtelenül" újra készítsd a SecondLifeTXTTimer-t ahányszor azt hívod annyiszor újat készít
MPKaboose is offline  
Old 30/04/2010, 07:07 PM   #9
Silent.Hunter
Little Clucker
 
Join Date: Mar 2009
Posts: 49
Reputation: 0
Default Re: Textdraw összeakadás

Nem igaz? Hmm... azt hiszem akkor öszekevertem az OnPlayerUpdate-val nem?
Silent.Hunter is offline  
Old 30/04/2010, 07:49 PM   #10
MPKaboose
High-roller
 
MPKaboose's Avatar
 
Join Date: Mar 2008
Location: Romania, Timisoara
Posts: 1,075
Reputation: 0
Default Re: Textdraw összeakadás

Quote:
Originally Posted by Silent.Hunter
Nem igaz? Hmm... azt hiszem akkor öszekevertem az OnPlayerUpdate-val nem?
erre bezeg igent mondok :P
MPKaboose is offline  
 

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[FilterScript] [FS] TextDraw editor 0.6 - Multiple textdraw support, for proffesional textdraws Zamaroht Filterscripts 369 20/01/2013 03:46 PM
TextDraw Help Ö xDENNNIISSSS Help Archive 7 24/01/2011 08:03 PM
[HELP]TextDraw zyzuinm Archive 9 12/01/2010 07:23 PM
[Textdraw] New Player steals the Textdraw KingArthur Help Archive 15 28/02/2009 06:50 PM
Textdraw overwrite textdraw fiordas Help Archive 9 10/02/2009 06:45 PM


All times are GMT. The time now is 07:44 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.