SA-MP Forums

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

 
 
Thread Tools Display Modes
Old 30/04/2010, 07:53 PM   #11
smeti
Huge Clucker
 
smeti's Avatar
 
Join Date: Sep 2008
Posts: 326
Reputation: 32
Default Re: Textdraw összeakadás

Quote:
Originally Posted by MPKaboose
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
Így van az OnGameModeInit függvény csak egyszer hívódik meg, mikor a szerver elindul és nem ismétlődik folyamatosan. Ezt egyszerűen letudod ellenőrizni:
pawn Code:
public OnGameModeInit()
{
  new
     H,
     M,
     S;
  gettime(H, M, S);
  printf("Teszt szerver üzenet! Szerver Start, time: %02d:%02d:%02d", H, M, S);
  return 1;
}
Megnézed mennyiszer jeleníti meg ezt az üzenetet mikor elindítod a szervert, persze megnézheted a server_log.txt fájlban is.

És a textdraw:
Ha dinamikusan változó textdraw-ot akarsz létrehozni akkor egy for vagy while ciklus segítségével létre kell hoznod minden játékosnak egy textdraw_ot, az OnGameModeInit függvény alatt. Utána az általad kreált public funkcióban, elég csak elrejteni majd megváltoztatni a textdraw szövegét és újra megjeleníteni. Felesleges leterhelni a szervert folyamatos textdraw létrehozással.

pawn Code:
#include <a_samp>

new
    Text:sltxt[MAX_PLAYERS];

#define txtbox  0xC0C0C0AA
new
    Float:txtx = 570.00,
    Float:txty = 310.00;

public OnGameModeInit()
{
    CreateTextDraw();
    return true;
}

stock CreateTextDraw()
{
    for(new i = 0, max_p = GetMaxPlayers(); i < max_p; i++) // Létrehozunk annyi textdrawot amennyi a max slotok száma.
                                // Azért kell elvileg annyi textdraw amennyi játékos van mivel mindegyiknek más tartalommal kell megjeleníteni.
    {
        sltxt[i] = TextDrawCreate(txtx, txty, " ");
        TextDrawUseBox(sltxt[i], 1);
        TextDrawFont(sltxt[i], 1);
        TextDrawBoxColor(sltxt[i], txtbox);
    }
    return true;
}

forward SecondLifeTXTTimer(playerid, szoveg[], timer);
public SecondLifeTXTTimer(playerid, szoveg[], timer)
{
    if(IsPlayerConnected(playerid))
    {
        TextDrawHideForPlayer(playerid, sltxt[playerid]);  // Elrejtjük a textdrawot a playerid előtt
        TextDrawSetString(sltxt[playerid], szoveg);     // Megváltoztatjuk a textdraw szövegét.
        TextDrawShowForPlayer(playerid, sltxt[playerid]);  // Majd megjelenítjük újra a textdrawot a megváltoztatott tartalommal.
        SetTimerEx("SecondLifeTXTHide", timer, false, "i", playerid); // Elindítunk egy nem ismétlődő timert ami arra hivatott hogy egy bizonyos idő után meghívjon egy olyan
                                    // funkciót, ami elrejti a játékos előtt a textdrawot.
    }
    return true;
}

forward SecondLifeTXTHide(playerid);
public SecondLifeTXTHide(playerid) // Ide is azért kell public funkció mivel timer segítségével van meghívva.
{
    if(IsPlayerConnected(playerid)) // Ezt feleslegesnek tartom de itt hagytam hátha a textdraw elrejtésének ideje túl hosszú és közben kilép a játékos.
    {
        TextDrawHideForPlayer(playerid, sltxt[playerid]); // Textdraw elrejtése
    }
    return true;
}

// Fura kiírások elkerülése végett a dinamikus textdrawot nem árt elrejteni játékos csatlakozáskor

public OnPlayerConnect(playerid)
{
    TextDrawHideForPlayer(playerid, sltxt[playerid]);
    return true;
}

Mondjuk nem így kellene működni, de ez a módszer vált be nálam kilométeróra textdraw esetén.
smeti is offline  
Old 01/05/2010, 10:43 AM   #12
Silent.Hunter
Little Clucker
 
Join Date: Mar 2009
Posts: 49
Reputation: 0
Default Re: Textdraw összeakadás

Kösz Phento. Végül a te megoldásod alkalmazom
Silent.Hunter 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 09:04 AM.


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