Game

Uit Bastiaan's wiki
Naar navigatie springen Naar zoeken springen

Systeem configureren voor gebruik vd Game

Member Sessie cookies:

mkdir /var/tmp/CrimeOnlineSessions
chmod 777 /var/tmp/CrimeOnlineSessions

Smarty template compile plek:

mkdir /mnt/disk/tmpWWW/CrimeOnlineTemplates/cache
mkdir /mnt/disk/tmpWWW/CrimeOnlineTemplates/members
mkdir /mnt/disk/tmpWWW/CrimeOnlineTemplates/public
chmod 777 /mnt/disk/tmpWWW/CrimeOnlineTemplates/*

Opzet

  • Voor iedere pagina is er ook echt een pagina. Geen één pagina oplossing.
  • Geen directe posts van variablen, alle afhandeling van formulieren dmv een XMLHTTPRequest naar een handle?.php pagina
  • Communicatie van server naar browser na een XMLHTTPRequest gaat via JSON

Conventies

Variabelen in PHP zijn hoofdlettergevoelig. In MySQL zijn database namen en tabel namen hoofdlettergevoelig als het OS dat is, terwijl kollomnamen in MySQL nooit hoofdlettergevoelig zijn.

Directory structuur

  • Game
    • members: bevat alle scripts waar alleen toegang tot is m.b.v. een login
    • public: bevat alle publiek toegankelijke scripts
    • templates:
      • public: bevat publiek toegankelijk template (Smarty, maar ook email templates!)
      • members:
    • static: Statisch spul

Cookie/Sessie

Er worden twee soorten sessies onderscheiden, die ieder hun eigen cookie hebben. Deze twee sessies zijn de publieke sessie en de members sessie. De sessie worden automatisch gestart voor elk bestand dat in de corresponderende directory zit. Dit gebeurt door een .htaccess file in elke directoy:

php_flag session.auto_start On
php_value session.name Members
php_value session.gc_maxlifetime 14400

Publieke sessie

Deze variabelen worden opgeslagen in de publieke sessie:

$_SESSION['locale'] Bevat de taalinstelling van de huidige gebruiker in de vorm: nl_NL
$_SESSION['CaptchaString'] Bevat een string die overeenkomt met de code in het Captcha plaatje

Members sessie

Deze variabelen worden opgeslagen in de members sessie:

$_SESSION['CaptchaString'] Bevat een string die overeenkomt met de code in het Captcha plaatje
$_SESSION['Authenticated'] Bepaald of de login credential juist waren, true indien juist
$_SESSION['Authenticated'] Bepaald of de login credential juist waren, true indien juist
$_SESSION['m']['id'] Het unieke ID van de ingelogde persoon
$_SESSION['m']['email'] Het email adres van de ingelogde persoon
$_SESSION['m']['password'] Het wachtwoord (zonder encoding!) van de ingelogde persoon
$_SESSION['m']['locale'] De locale van de ingelogde persoon in het formaat: nl_NL
$_SESSION['m']['admin'] true als member admin rechten heeft, false in alle andere gevallen
$_SESSION['m']['moderator'] true als member moderatie rechten heeft in het forum, false in alle andere gevallen
$_SESSION['m']['translator'] Bevat een array met locales welke de user toestemming toe heeft om die te bewerken
$_SESSION['LoginTime'] Tijdstip van inloggen, in sec na de UNIX epoch
$_SESSION['ClicksTime'] Tijdstip van opvragen vorige pagina buiten $ClickLimitTime (dit tijdstip update dus niet bij elke klik, maar bij elke klik buiten de $ClickLimitTime! (config/global.php!)
$_SESSION['Clicks'] Aantal keer dat een gebruiker een pagina heeft opgevraagd sinds $ClickLimitTime
$_SESSION['BJChipValue'] Waarde in $'s van het blackjack fische
$_SESSION['c']['id'] ID van het huidige karakter
$_SESSION['c']['name'] naam van het huidige karakter
$_SESSION['c']['city'] nummer van de stad waarin het huidige karakter zich bevind
$_SESSION['c']['cityName'] string met de naam van de stad waar het huidige karakter zich bevind
$_SESSION['c']['money'] int met daarin het geld wat iemand heeft
$_SESSION['c']['health'] int met daarin het aantal levenspunten dat iemand heeft van 0-100
$_SESSION['c']['career'] int met daarin het 'beroep' dat iemand heeft genomen
$_SESSION['c']['level'] int met daarin het niveau wat iemand binnen zijn beroep heeft
$_SESSION['c']['rank'] string met de naam van iemand zijn beroep (combinatie van career en niveau)
$_SESSION['c']['crewid'] int met daarin het nummer van de crew waar toe deze speler behoort (0 indien geen crew)
$_SESSION['c']['crewname'] string met daarin de naam van de crew (als het karakter tot een crew behoort)
$_SESSION['c']['crewbosscid'] int met het karakter ID van de huidige crew baas
$_SESSION['c']['crewrhmcid'] int met het karakter ID van de huidige RHM van de crew
$_SESSION['c']['crewlhmcid'] int met het karakter ID van de huidige RHM van de crew
$_SESSION['c']['capoid'] int met daarin het nummer van de capo waar we in zitten

Vertalingen

Vertalingen worden afgehandeld door de PHP extensie: gettext. Alle PHP strings die vertaalbaar moeten zijn moeten tussen _("") staan! Alle Smarty strings die vertaalbaar moeten zijn moeten tussen {t}{/t} staan!

Systeem configureren

Check of de taal ondersteunt wordt:

locale -a

Zo niet bewerk:

/etc/locale.gen

en run het programma:

locale-gen

Toevoegen nieuwe taal

  • In het bestand config/global.php zit de array:
$Languages = array('Dutch' => 'nl_NL', 'English' => 'en_US'); (met array_flip() kan je hem andersom krijgen)

Hieraan kunnen nieuwe talen worden toegevoegd.

  • Voeg aan de database tabel Translations een nieuwe kollom toe met de locale
  • nieuwe directory aanmaken in locale/ met de naam van de locale en in die directory een nieuwe directory maken LC_MESSAGES/
  • aan het systeem een nieuwe locale toevoegen. Onder Debian kan dit met: dpkg-reconfigure locales

Interface beschrijvingen

members/handleLogin.php

POST:
  • email = ...
  • password = ...
Error:
  • Error = true
  • ErrorText = ...
No errror:
  • Error = flase
  • Text = redirect URL

Nuttige links

Straffen

Open proxies

Open proxies zijn computer die http requests doorsturen. Hierdoor lijkt het of het verzoek vanaf die computer komt maar in werkelijkheid komt het verzoek vanaf een andere computer. Hier tegen optreden is bijzonder lastig omdat het verzoek niet is te onderscheiden van een normaal verzoek. Er zijn echter databases beschikbaar van bekende (en geverifieerde) open proxies.

Sites met proxy databases:

Het testen of een IP voorkomt in 1 van deze lijsten kan met een DNS lookup op het omgekeerde IP adres: PHP:checkdnsrr

IP blokkering

Een IP blokkering is een zware straf omdat daarmee niet alleen de persoon in kwestie kan worden getroffen maar ook iedereen die vanaf datzelfde IP adres verbinding maakt. Daarnaast is mogelijk om deze IP blokkering te omzeilen door simpelweg vanaf een ander IP adres verzoeken te versturen.

Karakter blokkeren

Het blokkeren van een karakter wil zeggen dat er niet meer gespeeld kan worden met dat karakter. Afhankelijk van het vergrijp kan voor een langere periode het karakter geblokeerd blijven.

Als een karakter geblokkeerd is is het niet mogelijk een nieuw karakter te maken.

Stats

find . -name '*.php' -user bastiaan | xargs wc -l

find . -name '*.tpl' -user bastiaan | xargs wc -l

Datum Aantal regels PHP Aantal regels templates
2006-09-14 6.993 3.338
2006-09-16 7.545 3.363
2006-09-24 8.260 3.710
2006-10-07 9.240 4.359
2007-03-25 15.907 8.705
2007-05-26 16.966 9.336
2007-05-30 17.156 8.266

Links

Flash shooting game: http://www.gaingames.com/games/661/deadeye-shoot-some.html