Szerző Téma: SCMR 1.2  (Megtekintve 2582 alkalommal)

Nem elérhető M1A1

SCMR 1.2
« Dátum: 2014. október 18. - 19:11:39 »
+3 Show voters
SCMR
 
Leírás:
Ez egy szövegdaraboló függvénykönyvtár, mely \"lecseréli\" az alap SendClientMessage és SendClientMessageToAll függvényeket. SCMEX-tõl abban különbözik, hogy ez a space karaktereknél \"szedi szét\" a szövegeket. Nem nagy dolog, de gondoltam valakinek hasznos lehet. A fórumon nem találtam publikálva ilyent, ezért készítettem.
Mûködés(röviden):
Az elõre megadott max sorhosszúságok elõtt a megadott max szóhosszúságig lévõ utolsó space karakternél fejez be egy sort. Ha a szóhosszon belül nincs space karakter, akkor a maximum hossz után kezdõdik az új sor, azaz kettévágja az ott lévõ szót(vagy bármit, ami ott van).
Használat:
A használata nem nehezebb az SCMEX-énél. Az a_samp függvénykönyvtár után kell be include-olnunk.
A maximum sorhosszúság alapértelmezetten 128 karakter, a szóhosszúság 15 karakter. Az alap érték egy define-al, egy alkalmi érték a függvény paramétereiben megadható.
Define:
 
#define _SCMR_MAX_SIZE 110
#define _SCMR_MAX_WORD_SIZE 24

 
Fontos, hogy ezeket a függvénykönyvtár include-olása elõtt kell definiálni. Az _SCMR_MAX_SIZE értékének 64 és 144 között kell lennie; az _SCMR_MAX_WORD_SIZE értékének kisebbnek kell lennie, mint a max méret és nagyobbnak, mint 15, különben a fordító figyelmeztet.
Paraméterlista:
 
SCMR(const playerid, const color, const text[], const maxSize = _SCMR_MAX_SIZE, const maxWSize = _SCMR_MAX_WORD_SIZE)
SCMTAR(const color, const text[], const maxSize = _SCMR_MAX_SIZE, const maxWSize = _SCMR_MAX_WORD_SIZE)

 
Kép:
\"width=500\"screen.png?dl=1\"
[/img]
A képen látható teszt kódja:



SendClientMessageToAll(COLOR_GREEN, \"Az M1 Abrams amerikai harckocsi, amely az Amerikai Egyesült Államok Hadseregének és Tengerészgyalogságának fő típusa. 1980-ban állították szolgálatba, három fő változatát rendszeresítették (M1, M1A1, M1A2). Névadója Creighton Abrams tábornok, aki az Egyesült Államok hadseregének vezérkari főnöke és a 37. Páncélos Ezred parancsnoka volt. Az M1 Abrams az M60 Patton és az M48A5 típusokat váltotta le. Ennek ellenére nem vonták ki valamennyi M60A3...\");

 
Forrás: Wikipédia
 
Fontos:
Amennyiben a megadott hosszúság elõtt a max szóhosszig nincs space, de a végén egy színkód van, a színkódot is kettévághatja!
Letöltés:
<a href=\"https://www.dropbox.com/s/t8gk67pzbyusx03/SCMR.inc?dl=1\">Dropbox</a>
 
//------------------------------------------------------------------------------
// By: M1A1
//------------------------------------------------------------------------------
#if defined _SCMR_included
#endinput
#elseif !defined _samp_included
#error Please include a_samp before SCMR!
#endif
#if !defined _SCMR_MAX_SIZE
#define _SCMR_MAX_SIZE 128
#else
#assert _SCMR_MAX_SIZE <= 144 && _SCMR_MAX_SIZE >= 64
#endif
#if !defined _SCMR_MAX_WORD_SIZE
#define _SCMR_MAX_WORD_SIZE 15
#else
#assert _SCMR_MAX_WORD_SIZE < _SCMR_MAX_SIZE && _SCMR_MAX_WORD_SIZE >= 15
#endif
#define _SCMR_included
stock SCMR(const playerid, const color, const message[], const maxSize = _SCMR_MAX_SIZE, const maxWSize = _SCMR_MAX_WORD_SIZE)
{
new from = 0;
if(strlen(message) < maxSize)
{
return SendClientMessage(playerid, color, message);
}
do
{
new length = maxSize - 1;
for(new i = 0; i < maxWSize; i++)
{
   if(message[(from + length) - i] == \' \')
   {
      if(i != 0) length -= i - 1;
      break;
   }
}
if(from + length > strlen(message)) SendClientMessage(playerid, color, SCMR_getStrPart(message, from + 1, strlen(message)));
else SendClientMessage(playerid, color, SCMR_getStrPart(message, from, from + length));
from += length;
}
while(from < strlen(message) - 1);
return 1;
}
stock SCMTAR(const color, const message[], const maxSize = _SCMR_MAX_SIZE, const maxWSize = _SCMR_MAX_WORD_SIZE)
{
new from = 0;
if(strlen(message) < maxSize)
{
return SendClientMessageToAll(color, message);
}
do
{
new length = maxSize - 1;
for(new i = 0; i < maxWSize; i++)
{
   if(message[(from + length) - i] == \' \')
   {
      if(i != 0) length -= i - 1;
      break;
   }
}
if(from + length > strlen(message)) SendClientMessageToAll(color, SCMR_getStrPart(message, from + 1, strlen(message)));
else SendClientMessageToAll(color, SCMR_getStrPart(message, from, from + length));
from += length;
}
while(from < strlen(message) - 1);
return 1;
}
#if defined _ALS_SendClientMessage
    #undef SendClientMessage
#else
    #define _ALS_SendClientMessage
#endif
#define SendClientMessage SCMR
#if defined _ALS_SendClientMessageToAll
    #undef SendClientMessageToAll
#else
    #define _ALS_SendClientMessageToAll
#endif
#define SendClientMessageToAll SCMTAR
stock SCMR_getStrPart(const string[], const start, const end)
{
new tmp[144];
strmid(tmp, string, start, end);
return tmp;
}
« Utoljára szerkesztve: 2015. április 01. - 03:31:43 írta M1A1 »

SCMR 1.2
« Válasz #1 Dátum: 2014. október 18. - 22:26:13 »
0 Show voters
Tetszik. Írd ki a készítõt, valamint rossz helyre nyitottad.

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
SCMR 1.2
« Válasz #2 Dátum: 2014. október 18. - 22:55:14 »
0 Show voters
[gmod]A moderálás nem a te dolgod, Nukerdog. A készítõ pedig õ, ezt ki is írta. Amennyiben mégsem így lenne, bizonyítékkal lehet ezt megcáfolni. Valamint rossz helyre sem nyitotta.[/gmod]

Nem elérhető M1A1

SCMR 1.2
« Válasz #3 Dátum: 2014. október 19. - 09:16:54 »
0 Show voters
Idézetet írta: Nukerdog date=1413663973\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"51039\" data-ipsquote-contentclass=\"forums_Topic
Tetszik. Írd ki a készítõt, valamint rossz helyre nyitottad.
 
A készítõ én vagyok, és jó helyre nyitottam. :)
Mibõl gondoltad, hogy nem én írtam? Alapból mindenkinek angolul kéne írni a scripteket(változóneveket, kommentelést, stb...), hogy más nyelvûek is könnyen tudják módosítani/átlátni, csak a többséget ez nem érdekli.

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
SCMR 1.2
« Válasz #4 Dátum: 2014. október 19. - 09:29:55 »
0 Show voters
Ha még a színkódokat is megtalálja ({,} karakterek) akkor lesz az igazi bár így is többet tud mint az SCMEX.
Sebességet mértél?

Nem elérhető M1A1

SCMR 1.2
« Válasz #5 Dátum: 2014. október 19. - 09:45:47 »
0 Show voters
Idézetet írta: kzyn date=1413703795\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"51039\" data-ipsquote-contentclass=\"forums_Topic
Ha még a színkódokat is megtalálja ({,} karakterek) akkor lesz az igazi bár így is többet tud mint az SCMEX.
Sebességet mértél?
 
Sebességet még nem mértem, de mindjárt mérek.
Lehet hogy még továbbírom majd, hogy a színkódokkal is foglalkozzon, ha lesz annyi erõm és idõm... (suli)
Szerk.:
Megmértem a sebességét. Az eredmény 0-lett GetTickCount()-al. Gondoltam ez lehetetlen, így megnéztem gettime()-al is, de így is 0 lett. Ez valós érték lehet, vagy rosszul mértem volna?

Dupla hozzászólás automatikusan összefûzve. ( [time]2014. Október 19. 10:39:21[/time] )

FRISSÍTVE!
Észrevettem, hogy isnull-t használok a definiálása nélkül...
« Utoljára szerkesztve: 2014. október 20. - 00:52:43 írta M1A1 »

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
SCMR 1.2
« Válasz #6 Dátum: 2014. október 19. - 14:42:28 »
0 Show voters
Futtasd le 10000-szer és úgy mérd.

Nem elérhető M1A1

SCMR 1.2
« Válasz #7 Dátum: 2014. október 20. - 00:24:39 »
0 Show voters
Idézetet írta: kzyn date=1413722548\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"51039\" data-ipsquote-contentclass=\"forums_Topic
Futtasd le 10000-szer és úgy mérd.
 
Rendben, köszi.
Köszönöm a pluszt!
FRISSÍTVE!
Kis optimizáció. Most már nem 0-tól járja végig a szövegrészeket(aminek nem volt értelme), hanem sorhossz-15 -től.
Időt mérek mindjárt...
Szerk.:
10000-szer meghívva 287 tick telik el. Ez lassúnak számít? :hmmm:
« Utoljára szerkesztve: 2014. október 20. - 00:52:14 írta M1A1 »

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
SCMR 1.2
« Válasz #8 Dátum: 2014. október 20. - 07:06:55 »
0 Show voters
Nem tudom. Ugyanazzal a szöveggel futtasd le az scmexel is ugyanannyiszor.
Mondjuk szerintem nem fontos ennyire a gyorsaság, mert akár a negyedik karakternél is lehet az a space.

Nem elérhető M1A1

SCMR 1.2
« Válasz #9 Dátum: 2014. október 20. - 22:24:18 »
0 Show voters
Sebességkülönbség hozzáadva.
Az SCMR 20 tick-el lassabb, de szerintem ez viszonylag nem sok.

Nem elérhető Sramm

  • 596
    • Profil megtekintése
SCMR 1.2
« Válasz #10 Dátum: 2014. október 23. - 10:21:34 »
0 Show voters
Teljesen felesleges a gyorsasag, itt elhanyagolhato.

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
SCMR 1.2
« Válasz #11 Dátum: 2014. október 23. - 12:07:15 »
0 Show voters
Maga a kód lehetne optimalizáltabb, meg sokkal kisebb is. Túl van bonyolítva, sokkal egyszerűbb módon is meglehet írni.
Gyorsaság meg nem számít ilyen dolognál, nem gondolom hogy van, aki 1000x kiíratja az üzeneteket :D

Nem elérhető Csabesz

  • 7827
    • Profil megtekintése
SCMR 1.2
« Válasz #12 Dátum: 2014. október 23. - 13:51:44 »
0 Show voters
Idézetet írta: DrAkE date=1414058835\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"51039\" data-ipsquote-contentclass=\"forums_Topic
Maga a kód lehetne optimalizáltabb, meg sokkal kisebb is. Túl van bonyolítva, sokkal egyszerűbb módon is meglehet írni.
 
+1
Nevettem, mikor megláttam ezt a megoldást  :D Az én 10 soros megoldásomhoz képest elég bonyolult.

Nem elérhető M1A1

SCMR 1.2
« Válasz #13 Dátum: 2014. október 23. - 13:58:04 »
0 Show voters
Idézetet írta: CasHiis date=1414065104\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"51039\" data-ipsquote-contentclass=\"forums_Topic


Maga a kód lehetne optimalizáltabb, meg sokkal kisebb is. Túl van bonyolítva, sokkal egyszerűbb módon is meglehet írni.
 
+1
Nevettem, mikor megláttam ezt a megoldást  :D Az én 10 soros megoldásomhoz képest elég bonyolult.
 
[/quote]
:D Hát.. Van még mit tanulnom...
Majd átgondolom az egészet. Egyenlőre nem igen érek rá..
Szerk.:
FRISSÍTVE!
Kód újraírva, most optimalizáltabb.
Szerk2.:
FRISSÍTVE!
Megint újraírtam a kódot, most mégkevésbé optimalizálatlan és bonyolult.
« Utoljára szerkesztve: 2014. november 10. - 19:03:29 írta M1A1 »

SCMR 1.2
« Válasz #14 Dátum: 2014. december 31. - 21:26:44 »
0 Show voters
Szerintem nem lett rossz.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal