Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2015-08-09, 19:04


luki123luki123

Place Game






Wiek: 28
Na forum: 5275 dni
Posty: 1948
Nick w MP: LuKiO

Piwa: 6101

Respekt: 611
Respekt: 611Respekt: 611

Witam ma pytanie napisa?em sobie funkcje na Znajdowanie Wolnego ID.
Mam teraz pytanie kt?ry przyk?ad b?dzie lepszy i czy kt?ry? b?dzie dzia?a?.

1.
local function ZnajdzID()
    local konta_baza getAccounts ()
    local IDS=0
    for i,v in ipairs(konta_baza) do
        if v==IDS then 
        IDS=IDS+1 
        end
        if v>IDS then
        return IDS 
        end
    end
    return IDS
end


2.
local function ZnajdzID ()
    local konta_baza getAccounts ()
    local IDS 0
    if #konta_baza == 0 then    return    end
    local IDS #konta_baza + 1
    return IDS
end


Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-09, 19:10


#404







Wiek: 26
Na forum: 4771 dni
Posty: 1438

Piwa: 2512

Respekt: 833,5
Respekt: 833,5Respekt: 833,5

Ostrzeżeń: 60%
Wydaje mi si?, ze najprosciej po prostu pobrac ilosc kont i doda? do tego 1. By? moze si? myl?, ale obstawa?bym przy drugim kodzie.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-10, 10:31


KukiX







Wiek: 34
Na forum: 6718 dni
Posty: 567

Piwa: 17560

Respekt: 160
Respekt: 160Respekt: 160

Drugi kod lepszy i raczej zadzia?a.
Jednak mo?na to zrobi? lepiej.

Podpis
Moje skrypty MTA:
¤PlayDM
¤Mini-Games v0.2
Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-11, 08:19


LovingDead







Wiek: 29
Na forum: 4869 dni
Posty: 34

Piwa: 3

Respekt: 50

Ale je?li to ma przydziela? graczowi tymczasowe ID podczas np. logowania to mo?e si? zdarzy? tak, ?e kilku graczy b?dzie mia?o to samo ID.
W twoim przypadku przed zalogowaniem ka?dego gracza kto? inny musia?by robi? konto, wtedy by to dzia?a?o.
No chyba, ?e id chcesz przypisywa? na accountDat? "na sta?e" to wtedy przyk?ad 2 b?dzie najlepszym rozwi?zaniem.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-11, 13:05


Wittx

8===D






Wiek: 26
Na forum: 4794 dni
Posty: 121
Nick w MP: wittula

Piwa: 1905

Respekt: 120
Respekt: 120

Patrz te? na to, ?e masz za???my 100 kont i konto o ID 20 zostanie usuni?te. Teraz masz 99 kont, ostatnie ma ID 100. Jakie ID otrzyma nowe konto? 100. Dlaczego? Bo w tablicy masz 99 kont, a u Ciebie ID to #elementy + 1. Najlepszym sposobem b?dzie maksymalne ID + 1.

?ap moj? funkcj?:
https://gist.github.com/Patryk1710/7958d332b617b65bcbe9

Maj?c np. tak? tablic?:
local table={1,2,3,5,8,12,4,32}

moja funkcja maxTableValue(table) zwr?ci Tobie int 32.

Funkcja getAccounts() nie zwraca tablicy z samymi int'ami. Tak? tablic? mo?na zrobi? tak:
https://gist.github.com/Patryk1710/2b3b9d0db474c8fbc173

Mam nadziej?, ?e pomog?em :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-11, 14:55


luki123luki123

Place Game






Wiek: 28
Na forum: 5275 dni
Posty: 1948
Nick w MP: LuKiO

Piwa: 6101

Respekt: 611
Respekt: 611Respekt: 611

New_Banan, m?j spob?b chyba jest lepszy.

local function ZnajdzID()
    local gracze=getAccounts()
    local IDS=0
    for i,v in ipairs(gracze) do
    local ID getAccountDatagracze"Gracz-ID" )
        if ID==IDS then IDS=IDS+1 end
        if ID>IDS then return IDS end
    end
    return IDS
end


Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-11, 16:25


Wittx

8===D






Wiek: 26
Na forum: 4794 dni
Posty: 121
Nick w MP: wittula

Piwa: 1905

Respekt: 120
Respekt: 120

luki123luki123, chyba nie do kon?a :D Wymie? mi wady mojego i zalety Twojego.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-12, 02:34


Loop

Inspektor






Wiek: 27
Na forum: 4289 dni
Posty: 311
Nick w MP: Inspektor

Piwa: 201

Respekt: 130
Respekt: 130

Najlepszym sposobem jest nadanie ID z bazy danych.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-12, 11:32


Wittx

8===D






Wiek: 26
Na forum: 4794 dni
Posty: 121
Nick w MP: wittula

Piwa: 1905

Respekt: 120
Respekt: 120

"Loop" napisał/a:

Najlepszym sposobem jest nadanie ID z bazy danych.


Nada? ID z bazy danych? :huh:

Pobiera konta z bazy danych w celu sprawdzenia ID, zapisuje nowe konto w bazie danych, wszystko to si? dzieje w?a?nie w bazie danych, tyle, ?e nie w?asnej, a wbudowanej. Co nie zmienia faktu, ?e baza danych to baza danych. Bo jak inaczej?

MySQL i autoinkrementacja by?aby najlepszym rozwi?zaniem. Je?li nie chcesz bawi? si? w MySQL (a warto) i zosta? przy wbudowanej bazie danych (potrafi si? sypa?) to spos?b maksymalne ID + 1 b?dzie najbezpieczniejszy, uwierz mi.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-12, 16:43


luki123luki123

Place Game






Wiek: 28
Na forum: 5275 dni
Posty: 1948
Nick w MP: LuKiO

Piwa: 6101

Respekt: 611
Respekt: 611Respekt: 611

New_Banan, tylko je?eli zostanie usuni?te konto to automatycznie nadaje te same ID 2 osobom

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-12, 16:55


Tostuch







Wiek: 27
Na forum: 4931 dni
Posty: 483
Nick w MP: Tost

Piwa: 137

Respekt: 110
Respekt: 110

Zawsze mo?na u?y? SQLite, nieprawda?? Lecz wiem z w?asnego do?wiadczenia ?e SQLite lubi p?ata? figle.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-08-12, 21:38


Wittx

8===D






Wiek: 26
Na forum: 4794 dni
Posty: 121
Nick w MP: wittula

Piwa: 1905

Respekt: 120
Respekt: 120

"luki123luki123" napisał/a:

New_Banan, tylko je?eli zostanie usuni?te konto to automatycznie nadaje te same ID 2 osobom


W?a?nie nie. Je?li masz 3 konta {1,2,3}, konto o ID 2 lub o ID 1 zostanie usuni?te ({1,3} lub {2,3}) to i tak nast?pne konto b?dzie mia?o ID 4, poniewa? najwi?ksze ID to 3, a spos?b to maksymalne ID + 1 (3+1=4)

Natomiast je?li jest {1, 2, 3} i konto o ID 3 zostanie usuni?te (zostaje {1,2}) to najwi?ksze ID to 2, czyli nowe konto b?dzie mia?o ID 3, poniewa? konto z takim ID ju? nie istnieje i mo?na je ?mia?o przypisa? do nowego konta. (2+1=3)

ID jest nadawane jednorazowo, przy tworzeniu konta. Jesli masz inaczej - to nie ID.

Postaw piwo autorowi tego posta
 

 
Tagi: system
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » System ID Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku