Siema, chcia?em Wam przedstawi? "kod xD" na prac? dorywcz?.
Polega ona na tym, ?e normalnie tworz? nam si? markery w kilku miejscach(to dodajemy normalnie w tabeli) i po wej?ciu w jaki? marker nam go usuwa.
A jak ju? wejdziemy we wszystkie markery to dostajemy hajs.
A teraz pytanie: po co to zrobi?em? przecie? to nie jest ?adna innowacja!
Odpowiadam, ?e dla wzoru, poniewa? jak niekt?rzy ludzie chc? zrobi? tak? prost? "prac?" w .lua, to po wej?ciu w marker usuwa nam si? tylko ten umiejscowiony najni?ej w tabeli. A tak si? dzieje, poniewa? zamiast usun?? source usuwaj? t? zmienn?, w kt?rej jest tworzony marker.
Czyli w paru s?owach - dla nowych programist?w lua, aby si? nie zniech?cali, ?e lua jest jakie? trudne.
Skrypt:
Ukryta wiadomość / Hidden message(aby ją zobaczyć musisz postawić użytkownikowi)
Wiadomość została ukryta, aby ją przeczytać należy się zalogować.
Witam! Jest mo?liwo?? ominiecia jako? p?tli? Czy nie za bardzo. Chcia?bym tworzy? jak najmniej p?tli tylko nie wiem jak za bardzo. Np jak jest spos?b to mo?e jaki? przyk?adowy kod?? Za pomoc leci piwko i respekt!
Wr?ci?em do gamemoda, kt?rego kiedy? pisa?em i chcia?em go doko?czy?. Zaczynam od wykrycia b?ed?w, bug?w, itd./itp. Do rzeczy.
Posiadam par? textdraw?w w p?tli for i zauwa?y?em ?e je?li pod t? p?tl? dam jak?? funkcj?/texdraw to on(a) nie dzia?a. Czy kto? kiedy? mia? podobny problem i wie jak to naprawi?.
[code] for(new i = 0; i < MAX_PLAYERS; i++)
{[/code]
Texdrawy w p?tli
pasek ma 26td ale po?owa z nich nie wymaga zap?tlenia.
[code]new Text:TDPasekUpdate[13][MAX_PLAYERS];
new Text:Licznik[10][MAX_PLAYERS];
new Text:CashTD[MAX_PLAYERS];
new Text:ExpTD[MAX_PLAYERS];
new Text:HealthTD[MAX_PLAYERS];
new Text:ArmourTD[MAX_PLAYERS];
new Text:TDaFragi[3][MAX_PLAYERS];
new Text:TDJail[4][MAX_PLAYERS];
new Text:Wybieralka[10][MAX_PLAYERS];[/code]
Je?li dobrze policzy?em to a? 44 textdrawy.
Jest mo?e lepszy spos?b aby to dzia?a?o prawid?owo, bez tego problemu i bez odci??ania serwera? (Zdaje mi si? ?e tak jak mam teraz serwer laguje).
@edit
[color=red]---------------------------------[/color]
Jeszcze jedno pytanie. Co zrobi? aby pojazd nie wraca? do miejsca respawnu?
[spoiler][code]CMD:tablica(playerid, cmdtext[])
{
if (IsPlayerInAnyVehicle(playerid))
{
new ttablica[10];
if(sscanf(cmdtext,"s[10]",ttablica)){
SendClientMessage(playerid, COLOR_WHITE, "›› |Info| Wpisz /tablica [tekst]");
return 1;
}
if (strlen(ttablica) > 7)
{
SendClientMessage(playerid, -1, "Max 7 znak?w.");...
W dzisiejszym poradniku, chcia?bym przedstawi? Wam p?tle. P?tla w zwyczajnej formie, wykonuje kod poni?ej i wraca do pocz?tku po czym wykonuje go jeszcze raz i tak bez ko?ca. Przejd?my do praktyk.
Przyk?ad p?tli :
[lua]for k,v in ipairs ( getElementsByType ( "player" )) do[/lua]
Opiszmy j? Sobie
for - z angielskiego "dla"
k - inaczej key, rzadko u?ywany w kodzie.
v - inaczej value, zwraca nam warto?? kt?r? podali?my dla elementu w nawiasie.
do - z angielskiego "zr?b"
Podana wy?ej p?tla, sprawdza wszystkie obiekty, czyli "player" ( gracz ).
w tym przypadku [color=yellow]v[/color] zwr?ci nam wszystkich graczy obecnych na serwerze.
[u][color=red][b]UWAGA : R??nic? podam w kolejnym poradniku.[/b][/color][/u]
Przyk?ad w kodzie :
[lua]addCommandHandler ( "gracze", function()
for k,v in ipairs ( getElementsByType ( "player" )) do
outputChatBox ( getPlayerName ( v ), root )
end
end)[/lua]
Wspomn?, ?e p?tla wymaga dodania END.
Ten kod, pokazuje nam nicki graczy na serwerze, inaczej t?umacz?c
sprawdza nick i go wy?wietla, potem znowu sprawdza nick i znowu go wy?wietla i tak dop?ki kod nie stwierdzi, ?e pokaza? wszystkich graczy i sam przestanie sprawdza?.
Drugim rodzajem p?tli jest p?tla ograniczona.
Mo?emy j? ograniczy? do x razy.
Jak wcze?niej wspomnia?em [color=yellow]i[/color] zwraca liczb? czyli :
Witajcie, m?j b??d polega na tym, ?e po zabiciu kogo?, lub po zabiciu mnie serwer pada, a crash detect wywala co? takiego:
[16:14] Script[gamemodesmysql2.amx]: During execution of OnPlayerDeath():
[16:14] Script[gamemodesmysql2.amx]: Run time error 4: "Array index out of bounds"
[16:14] Error information:
[16:14] Array max index is 199 but accessing an element at 65535
[16:14] Call stack (most recent call first):
[16:14] The server has crashed executing 'gamemodesmysql2.amx'
[16:14] Call stack (most recent call first):