Jedynak Posted May 3, 2013 Share Posted May 3, 2013 Czesc, potrzebuje małej pomocy w sprawach optymalizacji swych skryptów. Otóz jak pisać je najbardziej optymalnie? Znam sie na LUA, ale z tym mam spory problem. Jak robić: - poprawne triggery - gdy chce coś przypisać, uzyc zmiennej, setElementData a moze tablicy? - jakies sposoby by zastepowac petle czyms innym, da sie wogole tak? Dodatkowo, fajnie byloby uslyszec wasze rady, czego sie wystrzegac by te skrypty dzialaly sprawnie! Dziekuje. Link to comment
fmj02 Posted May 6, 2013 Share Posted May 6, 2013 (edited) Jakbyś napisał nie w polskim dziale to pewnie dostał byś odpowiedź szybciej, a tak to gdyby nie ja poczekałbyś jeszcze tydzień - poprawne triggery triggerEvent triggerClientEvent triggerServerEvent - gdy chce coś przypisać, uzyc zmiennej, setElementData a moze tablicy? setElementData działa podobnie tak jakbyś użył tablicy. Uzywaj wiec tego. set/getElementData w Lua(pod inny multiplayer): Data = { } for i = 0, GetMaxSlots( ) do Data[ i ] = { } end function SetPlayerData( playerid, dKey, dValue ) if playerid and dKey then if IsPlayerConnected( playerid ) and type( dKey ) == "string" then for i, pdata in ipairs( Data[playerid] ) do if pdata.key == dKey then if dValue == nil then table.remove( Data[ playerid ], i ) return true else pdata.value = dValue return true end end end table.insert( Data[ playerid ], { key = dKey, value = dValue } ) return true end return false end return false end function GetPlayerData( playerid, dKey ) if playerid and dKey then if IsPlayerConnected( playerid ) and type( dKey ) == "string" then for i, pdata in ipairs( Data[playerid] ) do if pdata.key == dKey then return pdata.value end end return false end return false end return false end - jakies sposoby by zastepowac petle czyms innym, da sie wogole tak? Możesz uzyc setTimer onClientRender https://wiki.multitheftauto.com/wiki/OnClientRender (cos nie pokazalo) Po prostu pisz i testuj to co pisałeś, wszystko przyjdzie samo w swoim czasie. Tak samo masz w filmach z Bruce Lee, czy w serii Karate Kid, bez sensu zakłada szmate i zdejmuje i na końcu okazuje się, że nauczył się walczyć poprzez zakładanie i zdejmowanie szmaty z wieszaka. Podobnie jest z programowaniem. Możesz nauczyć się wszystkiego. Przyjmij sobie taką radę. Jak robić triggery, z początku szczerze mówiąc gdy zaczynałem pisać w Lua też miałem problem z oddzieleniem Clienta od Serwera i często zdarzało się, że chciałem przenieść coś z jednej strony na drugą. Nie udawało się i w końcu się udało. Poczytaj sobie na wiki funkcje TriggerClientEvent, TriggerServerEvent, TriggerEvent (do usrania jeśli nie masz co robić ).Ogólnie TriggerEvent można dosłownie przetłumaczyć jako WywołajZdarzenie. Skrypty będą działać poprawnie jeśli poprawnie je napiszesz(według składni), a to jak wyglądać będzie kod zależy tylko i wyłącznie od ciebie. Z początku zapewne chujowo. Czytaj jak najwiecej, nie probuj samemu bo chuj wyjdzie. Pozdrawiam Edited May 6, 2013 by Guest Link to comment
Jedynak Posted May 6, 2013 Author Share Posted May 6, 2013 Znam sie na LUA, ale z tym mam spory problem. Nie mam problemu z rozpoznanie client <=> serwer. Chodzi mi w poprawnych triggerach o to by były one OPTYMALNE Ten kod, to stosować zawsze? Link to comment
fmj02 Posted May 6, 2013 Share Posted May 6, 2013 Optymalne wywołania, a jest w ogóle coś takiego?? Masz na wiki opis o jakim można w innych projektach pośnić. Ten kod miał na celu przedstawienie różnicy tabel i setelementdata/getelementdata. Nie uzywaj go, w MTA masz juz te funkcje napisane w C. (oczywiscie roznicy zadnej nie ma, po to developerzy stworzyli set/get elementdata - aby ulatwic zycie) https://wiki.multitheftauto.com/wiki/Event_system komplikujesz ostro chłopie Link to comment
dzek (varez) Posted May 6, 2013 Share Posted May 6, 2013 Każdy problem będzie miał inne optymalne rozwiązanie. Gdyby istniała zawsze jedna optymalna metoda - po co byłoby w ogóle tworzyć alternatywne możliwości. Co do czego to sam wybadasz, póki co po prostu pisz i poznawaj język - wszystko przyjdzie z czasem. Link to comment
Wojak Posted May 7, 2013 Share Posted May 7, 2013 - gdy chce coś przypisać, uzyc zmiennej, setElementData a moze tablicy? setElementData działa podobnie tak jakbyś użył tablicy. Uzywaj wiec tego. Tu bym się nie zgodził... setElementData domyślnie synchronizuje dane między serwerem i klientami, więc jeśli komuś zależy na optymalizacji, to nie powinien używać tej funkcji na daremno... (jeśli nie musisz synchronizować danych lepiej użyj tablicy) poza tym drobne uwagi do kodu: myślę że pętle w linijkach 9 i 31 są zbędne, tak samo jak korzystanie z funkcji table.insert i table.remove. Lepiej jest wykorzystać właściwości tabel w lua: Data = { } for i = 0, GetMaxSlots( ) do Data[ i ] = { } end function SetPlayerData( playerid, dKey, dValue ) if playerid and dKey then if IsPlayerConnected( playerid ) and type( dKey ) == "string" then Data[playerid][dKey] = dValue return true end return false end return false end function GetPlayerData( playerid, dKey ) if playerid and dKey then if IsPlayerConnected( playerid ) and type( dKey ) == "string" then return Data[playerid][dKey] end return false end return false end Odpowiadając więc na pytanie jakies sposoby by zastepowac petle czyms innym, da sie wogole tak? Zanim użyjesz pętli zastanów się czy musisz, jednak nie od razu rzym zbudowano, więc jak powiedział Kolega wyżej Co do czego to sam wybadasz, póki co po prostu pisz i poznawaj język - wszystko przyjdzie z czasem. Link to comment
Jedynak Posted May 7, 2013 Author Share Posted May 7, 2013 Wielkie dzieki - jeszcze jedno pytanie. Co lepsze? MySQL czy samo SQL Lite? czytalem i ktos pisal ze przy wiekszej ilosci rekordow sql lite dziala ciut wolniej, a z kolei przy mniejszej to MySQL dziala wolniej - nie wiem czy to prawda, wiec pytam sie tu. co mi radzicie używac jesli nie potrzebuje tego kodu na forum? Link to comment
dzek (varez) Posted May 7, 2013 Share Posted May 7, 2013 SQLLite jest też bardziej ograniczone, nie zrobisz tak złożonych zapytań jak w MySQL. Link to comment
Jedynak Posted May 7, 2013 Author Share Posted May 7, 2013 cos wiecej? chodzi o to ze np. nie moge posortowac czy cos? Link to comment
dzek (varez) Posted May 7, 2013 Share Posted May 7, 2013 uhm. nie dość, że nie pamiętam - to jeszcze to były skomplikowane zapytania. ty znasz tylko proste SELECT/INSERT/UPDATE/DELETE. Kiedyś nauczysz się co to JOIN np. oraz masę innych ciekawostek, oraz jak w praktyce z tego korzystać Link to comment
Jedynak Posted May 7, 2013 Author Share Posted May 7, 2013 rozumiem że radzisz używać MySQL? troche kicha, bo problem z eksportowaniem funkcji do jednego skryptu i tam dopiero słanie do MySQL ;x Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now