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

Wysłany: 2015-02-02, 18:54


MrYni

Uczeń LUA






Wiek: 30
Na forum: 4298 dni
Posty: 18
Nick w MP: MrYni

Piwa: 1

Respekt: 50

Witam!
Chcia?bym prosi? o napisanie dla mnie skryptu daj?cego kasy co 1h od zalogowania danej osoby dla wyznaczonej grupy
Daje zimne :piwo:

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-02-02, 22:39


Tostuch







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

Piwa: 137

Respekt: 110
Respekt: 110


Więcej informacji znajdziesz w Wikipedii MTA:

setTimer

Więcej informacji znajdziesz w Wikipedii MTA:

isObjectInACLGroup

Więcej informacji znajdziesz w Wikipedii MTA:

givePlayerMoney



Dopiska od Shuffle :



Więcej informacji znajdziesz w Wikipedii MTA:

onPlayerLogin


Ostatnio zmieniony przez MeeShuffle 2015-02-02, 22:43, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-02-02, 22:51


Wittx

8===D






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

Piwa: 1905

Respekt: 120
Respekt: 120

Timer ma by? dla ka?dego gracza osobno, dlatego musi zosta? on stworzony po stronie klienta.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2015-02-03, 01:15


Wielebny







Wiek: 41
Na forum: 5498 dni
Posty: 257
Nick w MP: Wielebny

Piwa: 1690

Respekt: 180
Respekt: 180Respekt: 180

"New_Banan" napisał/a:

Timer ma by? dla ka?dego gracza osobno, dlatego musi zosta? on stworzony po stronie klienta.


Tworzenie logiki nadaj?cej kas? po stronie klienta to du?y b??d, nie powinno si? nigdy ufa? danym przesy?anym przez klient?w: https://wiki.multitheftauto.com/wiki/Script_security#How_to_never_trust_data_coming_from_a_client

Cytat:


A hacked client could send anything, so all client data received by server scripts should be validated before use. Most data is received via client calls to setElementData or triggerServerEvent.


Musisz za?o?y?, ?e zhakowany klient mo?e wys?a? wszystko i wywo?a? ka?dy event. Strona kliencka powinan by? u?ywana tylko do renderowania gui, ca?a logika powinna znajdowa? si? zawsze po stronie serwera.

Druga sprawa to u?ywanie do tego timer?w - to mija si? z celem.
Znacznie lepszy spos?b to zapisywanie przy graczu czasu wej?cia na serwer i sprawdzanie co jaki? czas czy nie mine?a ju? godzina.

Pseudokod, nie testowany:


addEventHandler("onPlayerJoin"root, function()
 setElementData(source"lastTime"getRealTime().timestampfalse) -- zapisujemy aktualny timestamp (w sekundach)
end)

local function naliczaniePremii()
 local ts=getRealTime().timestamp -- aktualny timestamp
 for i,v in ipairs(getElementsByType("player")) do
  local lt=getElementData(v,"lastTime")
  if lt and lt+3600<ts then  -- min??a godzina od wej?cia na serwer
   givePlayerMoney(v31337)
   outputChatBox("Dostajesz $31337 za sp?dzenie godziny na serwerze."v)
   setElementData(v"lastTime"getRealTime().timestampfalse)
  end
 end
end

setTimer(naliczaniePremii600000) -- sprawdzamy czasy co minut?


W tej konkretnej implementacji elementdata o nazwie lastTime jest u?ywany do zapisania informacji o czasie wej?cia na serwer LUB czasie nadania ostatniej premii. Je?li minie 3600 sekund (1h) od zapisanej warto?ci to licznik jest zerowany na aktualny czas a gracz dostaje premi?.

Powy?szy kod b?dzie wymaga? optymalizacji przy wi?kszej ilo?ci graczy (powiedzmy 100) poprzez a) przepisanie go na cz??ciej wykonuj?cy sie timer, ale przetwarzaj?cy co n-tego gracza (np. co drugi gracz co 30s, albo co 4 co 15s) lub jeszcze uniwersalniej poprzez b) przepisanie go na coroutines.

Postaw piwo autorowi tego posta
 

 
Tagi: pieniądze :: grania
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » Pieniądze za 1h grania 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