Üzenetek megjelenítése

Ez a szekció lehetővé teszi a felhasználó által írt összes hozzászólás megtekintését. Vedd figyelembe, hogy csak azokba a fórumokba írt hozzászólásokat látod, amelyekhez hozzáférésed van.


Témák - M1A1

Oldalak: [1]
1
Archívum / Miért nil ez a változó?...
« Dátum: 2015. Július 26. - 07:58:39 »
Hellosztok!
Nemrég elkezdtem tanulni a Lua-t. Gyakorlásképpen egy info pickup készítőt írok. Valamiért hideGUI-nál a
mainWindow változó mindig nil, holott a GUI a képernyőn van, és a változóba elvileg eltároltam a főablak
elementjét... Előre is köszi a segítséget!
Spoiler for Kód::

local mainWindow
function showGUI()
if(mainWindow == nil) then
mainWindow = guiCreateWindow(606, 321, 194, 246, \"InfoPickups\", false)
guiWindowSetSizable(mainWindow, false)
guiSetVisible(mainWindow, true)
setElementData(mainWindow, \"buttonCreate\", guiCreateButton(10, 215, 66, 21, \"Create\", false, mainWindow), false)
setElementData(mainWindow, \"buttonDelete\", guiCreateButton(86, 215, 98, 21, \"Delete selected\", false, mainWindow), false)
local gridlist = guiCreateGridList(9, 29, 175, 176, false, mainWindow)
guiGridListAddColumn(gridlist, \"Name\", 0.5)
guiGridListAddColumn(gridlist, \"Position (X, Y, Z)\", 0.5)
setElementData(mainWindow, \"gridList\", gridlist, false)
bindKey(\"1\", \"down\", hideGUI)
end
end
function hideGUI()
if(not mainWindow == nil) then
guiSetVisible(mainWindow, false)
destroyElement(mainWindow)
unbindKey(\"1\", \"down\", hideGUI)
end
end
addCommandHandler(\"infopickups\", showGUI)

2
SA-MP: Szerverfejlesztés / SCMR 1.2
« Dátum: 2014. Október 18. - 19:11:39 »
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;
}

3
Sziasztok!
Lenne egy problémám. Elkezdtem szétszedni a módomat filterscriptekbe, mert reményeim szerint így sokkal átláthatóbb lesz, stb.. Létrehoztam egy inc fájlt is, amiben defináltam a gyakran használt kisebb függvényeket/eljárásokat/konstansokat. Ez eddig mind szép és jó, de azzal a problémával szembesültem, hogyha filterscriptbõl hívok meg egy eljárást, aminek paraméterül ékezetes betût is megadnék, akkor az ékezetes karakter helyett furcsa dolgokat ír ki..
.inc fájlban:
 
stock me(const &playerid, const text[])
{
new msg[128];
format(msg, sizeof(msg), \"* %s %s\", pName(playerid), text);
SendClientMessage(playerid, COLOR_LIGHTBLUE, msg);
sendRangedMessage(playerid, SAY_RANGE, COLOR_LIGHTBLUE, msg);
return 1;
}

 
A filterscriptemben:
 
me(playerid, \"egy állomással elõrébb tekerte a rádiót\");

 
Hát ez így néz ki:
\"sa-mp-000.png\"
A módban rendesen mûködik, csak filterscriptben nem..
Nem tudtok erre valami megoldást?
Elõre is köszönöm a segítséget!

Oldalak: [1]
SimplePortal 2.3.7 © 2008-2024, SimplePortal