Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.
GTAONLINE.PL
Tematy otagowane jako: pętle
1. Pętle interior
Cze??! Mam oto taki kod:
local wejscie_glowne createMarker(1015.5,-1557.80,15.5,"arrow",1,255,255,255,255)
local wyjscie_glowne createMarker(1011.90, -1557.80,-25.5,"arrow",1,255,255,255,255)
setElementDimension(wyjscie_glowne,99)
function 
wchodzenie(player)
    if 
getElementType(player) == "player" then
    
if source == wejscie_glowne then
        setElementPosition
(player,1010.09, -1557.80, -26)
        
setElementDimension(player,99)
        
setElementFrozen(player,true)
        
setTimer(setElementFrozen,1000,1,player,false)
    
end
    end
end

function wychodzenie(player)
    if 
getElementType(player) == "player" then
    
if source == wyjscie_glowne then
        setElementPosition
(player,1018.24,-1557.81,14.86)
        
setElementDimension(player,0)
        
setElementFrozen(player,true)
        
setTimer(setElementFrozen,1000,1,player,false)
    
end
    end
end

addEventHandler
("onClientMarkerHit"getRootElement(),wchodzenie)
addEventHandler("onClientMarkerHit"getRootElement(),wychodzenie)


Jak zrobi? ?eby by?o to pod p?tle?

[ Dodano: 2019-03-11, 16:54 ]
@ref
2. [SKRYPT] Praca na pętle
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ć.
3. Petle
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! :p
4. Pętle a TextDrawy
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.");...
5. Wstęp do LUA #2 - Pętle
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 :


[lua]for i = 1,100 do[/lua]


w tym przypa...
6. [DM] Pętle
Witam, mam pewien problem nie dzia?aj? mi ?adne p?tle, nie wa?ne czy jest to for czy while b??d?w w kompilatorze nie ma a p?tle nie dzia?aj?.

OnGameModeInit
Kod:


for(new i = 1;i == 3;i++)
{
print("elo");
}


Lub OnPlayerCommandText
Kod:

if (strcmp("/auto", cmdtext, true, 10) == 0)
{
new Float:a,Float:b,Float:c;
GetPlayerPos(playerid,Float:a,Float:b,Float:c);
for(new i = 1; i == 3; i++){
AddStaticVehicle(411, Float:a, Float:b, Float:c, 0, 0, 1);
}

return 1;
}


Te p?tle zrobi?em gdy zobaczy?em ?e nie dzia?aj? mi one. Pr?bowa?em i nic ?adnych efekt?w. Include zaktualizowane.
7. [INNE] Pętle - Crashe - Array
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):

Prosz? o pomoc, je?li mo?na, pozdrawiam.