Owk, de meeste weten wel dat ik zit te k*tt*n met CronJobs. Alleen nu bedenk ik mezelf, dat je bij criminals ook geld krijgt elk uur, maar dat dat dus geen cronjobs zijn die je hoeft intestellen. Kan iemand mij meer over dat vertellen?
ik heb het script nooit bekeken, maar OF hij stelt het zelf in, OF er zit een functie in die elke keer wordt aangeroepen als het script wordt geladen die kijkt of het tijd is voor de Turn Based Gold, en als dat zo is gaat hij dat uitvoeren.
en proximus, hoeft niet per se, je merkt pas of je nieuw geld hebt als je de pagina refreshed, dus het zou best kunnen
wat je kan doen is een timestamp opslaan in de database en die updaten bij elke keer als er een uur voorbij is sinds die timestamp
17:00 -> 17:30 (timestamp is 17:00) -> 18:00 (vervang timestamp)
Dan kan je als iemand terug is gekomen op de website het aantal uren tellen wat ondertussen geweest is en hem zo het geld toegeven wat hij moet krijgen.
NADEEL! Wanneer iemand een week weg is krijgt hij dus gewoon geld. Maar hij krijgt het geld dus pas als hij weer terug komt... niet altijd even eerlijk voor andere spelers die hem willen beroven.
edit: zoals in het laatste puntje van die site van henri dus staat
@proximus, dat hoeft helemaal niet. ik denk dat criminals ook zo werkt. Hij doet dat niet alleen bij die ene speler. maar elke pagina die hij laadt controleert hij even of er een uur voorbij is. zo ja dan doe je bij alle spelers zoveel geld erbij. zijn er meerdere uren voorbij? gebruikersgeld+(aantaluur * geld) en bij iedereen updaten. bij criminals controleert hij waarschijnlijk ook nog wat voor rang elk persoon is. en aan de hand daarvan komt er een ander bedrag bij. o ja je moet ook elke keer dat je een update doet, de tijd in een tabel in de database zetten. die hij moet controleren
ik weet niet of het zo in criminals zit. maar zo zou je het iig kunnen maken.
4 Q: ik heb een online spel en elk uur moeten de spelers geld erbij krijgen
Dit hoeft helemaal niet met een crontab.
In dit soort gevallen is het val geen enkel belang dat het geld echt elk uur wordt opgeteld. Het enige wat belangrijk is is dat het totaal aan geld klopt op het moment dat je het totaal opvraagt.
Dit kun je dus ook prima oplossen door een routine te maken die controleert hoe lang geleden er voor het laatst geld is bijgegeteld. Je kunt eenvoudig uitrekenen hoeveel hele uren er zitten tussen de vorige update en nu, en zoveel keer moet je geld erbij optellen. Na elke update onthoud je het huidige tijdstip zodat je de volgende keer vergelijkt met de tijd van deze update.
//zo dus... jezus.. ik zou niet weten hoe ik dat ook zou moeten aanpakken
In dit soort gevallen is het val geen enkel belang dat het geld echt elk uur wordt opgeteld. Het enige wat belangrijk is is dat het totaal aan geld klopt op het moment dat je het totaal opvraagt.
Dat weet je niet. Wat is de policy? Als iemand ook berooft mag worden tot zijn maximale terwijl hij/zij online is dan vindt IK het persoonlijk wel net zo eerlijk dat je op dat moment al het geld wat die persoon heeft kan jatten.
Anders kan iemand gewoon 2 weken inactive doen, terug komen, ineens dik geld hebben, en verder gaan. Wel apart.
Om nog maar niet te spreken over ghost accounts etc.
Citaat:
//zo dus... jezus.. ik zou niet weten hoe ik dat ook zou moeten aanpakkenÂ
Zie mijn laatste post. Het is een stuk logisch denken en je doet er wel even over voordat je het gemaakt hebt. Maar op zich is het een mooi staaltje werk.
het is niet handig om in een voorpagina of een andere gewone gebruikspagina een script te zetten wat controleert of er een uur voorbij is en dat dan al het geld gaat uitdelen, om een simpele reden: teveel tijd. Stel dat je spel 1000 users heeft. Wat er dan moet gebeuren, is dat php.exe 1000x de benodigde gegevens uit de database moet halen om het geld uit te rekenen waar diegene recht op heeft, dan dat uitrekenen (kost niet heel veel tijd), maar daarna moet dat ook weer in de tabel worden gezet. 2000x een mysql query dus, en reken maar dat dat tijd kost. Ik zou het iig niet leuk vinden als het soms gebeurt dat de pagina er gewoon focking lang over doet met laden
Je kunt ook een script maken dat als er een hoeveelheid geld van een user bekeken wordt, dat hij die dan update. Als je er vervolgens voor zorgt dat je niet te veel op 1 pagina hebt staan, dan is het zeker te doen, met niet al te veel serverload.
De oplossing van timmie_loots werkt waarschijnlijk ook.. 't is niet altijd dat het perse ELK uur moet gebeuren, er moet VOOR ELK uur een bepaald bedrag bij komen.