Petite animation Mario Kart en JS

Pour égayer un classement ou pour voir un peu plus loin.

HTML


<a class="perso" title="10"><img src="prono/22.gif" /><span><b>1<sup>er</sup></b> pseudo<br /><b>10 points</b></span></a>
<a class="perso" title="20"><img src="prono/10.gif" /><span><b>2<sup>ème</sup></b> pseudo<br /><b>20 points</b></span></a>
<a class="perso" title="30"><img src="prono/9.gif" /><span><b>3<sup>ème</sup></b> pseudo<br /><b>30 points</b></span></a>
<a class="perso" title="40"><img src="prono/7.gif" /><span><b>4<sup>ème</sup></b> pseudo<br /><b>40 points</b></span></a>
<a class="perso" title="50"><img src="prono/6.gif" /><span><b>5<sup>ème</sup></b> pseudo<br /><b>50 points</b></span></a>
<a class="perso" title="60"><img src="prono/5.gif" /><span><b>6<sup>ème</sup></b> pseudo<br /><b>60 points</b></span></a>
<a class="perso" title="70"><img src="prono/4.gif" /><span><b>7<sup>ème</sup></b> pseudo<br /><b>70 points</b></span></a>
<a class="perso" title="80"><img src="prono/3.gif" /><span><b>8<sup>ème</sup></b> pseudo<br /><b>80 points</b></span></a>
<a class="perso" title="90"><img src="prono/2.gif" /><span><b>9<sup>ème</sup></b> pseudo<br /><b>90 points</b></span></a>
<a class="perso" title="100"><img src="prono/1.gif" /><span><b>10<sup>ème</sup></b> pseudo<br /><b>10 points</b></span></a>
<div id="route"></div>

CSS


#route {
	background-image: url('prono/0a.gif');
	background-size: contain;
	}
.perso {
	position: absolute;
	}
.perso>img {
	width: 100%;
	}
.perso:hover span, .perso:focus span{
	transform: scale(1) rotate(0); 
	opacity: 1;	 
	}
.perso span {
	position: absolute;
	color: rgb(255,255,255);
	background: rgba(0,0,0,.8);
	padding: 10px;
	border-radius: 3px;
	box-shadow: 0 0 2px rgba(0,0,0,.5);
	transform: scale(0) rotate(-12deg);
	transition: all .25s;
	opacity: 0;
	z-index: 101;
	}

JS


var taille, pixels, posX, posY, liste, i;
var obj = document.getElementById("route");
var perso = document.getElementsByClassName('perso');
inforesize();
window.onresize = inforesize;
setInterval(frame, 33); // 33 ms = ~ 30 frames / seconde

function init_ () { // positionne
	liste = new Array ();
	for (i = 0; i < perso.length; i++) {
		var v = pixels / 100 * perso[i].getAttribute('title');
		perso[i].style.left = (posX + v)+'px';
		perso[i].style.top = (posY)+'px';
		liste[i] = new Array (
			(posX + v),
			posY,
			(posX + v),
			posY
			);
		}
	}
	
function inforesize () { // redimensionne
	taille = obj.clientWidth;
	pixels = Math.round(taille * 0.75);
	posX = obj.offsetLeft;
	obj.style.height = obj.style.marginTop = taille * 0.05;
	for (i = 0; i < perso.length; i++) {
		perso[i].style.width = taille * 0.05;
		perso[i].getElementsByTagName('span')[0].style.marginTop = taille * 0.05 * 1.5;
		perso[i].getElementsByTagName('span')[0].style.marginLeft = -taille * 0.05 * 1.5;
		}
	posY = obj.offsetTop - (taille * (0.05 / 4));
	init_();
	}

function posrand (ob1, ob2, ecart) { // déplacement random (actuelle, origine, ecart)
	var t = Math.round(Math.random() * (ob1+3 - ob1-1) + ob1-1);
	if (t > ob2 + ecart)
		t--;
	else if (t < ob2 - ecart)
		t++;
	return t;
	}

function frame () {
	for (i = 0; i < perso.length; i++) {liste[i][2] = posrand(liste[i][2], liste[i][0], 20); //x
		perso[i].style.left = liste[i][2]+'px';
		liste[i][3] = posrand(liste[i][3], liste[i][1], 5);	//y
		perso[i].style.top = liste[i][3]+'px';
		perso[i].style.zIndex = liste[i][3];
		}
	}

Télécharger l'archive (zip)

Script simple robinet à Bitcoins

Quelques étapes pour mettre en place votre faucet ou robinet à Bitcoins
Commencer par extraire le contenu de l'archive et modifier le fichier conf.php notamment admin_mdp

Le site peut être rendu inaccessible le temps de la mise en place avec open et ?acces_regie pour passer
Adapter la mémoire d'APC s'il est activé, et renseigner les données SMTP pour utiliser la validation des comptes par mail.


Accéder à l'administration en passant par la page /admin.php?pass=test
avec test pour le mot de passe administrateur par defaut

L'administration est simple
- La liste des inscrits et l'édition des variables
- L'état de la caisse : Les satoshis générés, les dépenses et les gains
- Les demandes de withdraw
- Des statistiques avec le trafic par heure et par jour
- La gestion des publicités
- Et gérer la mémoire

Il n'y a plus qu'à essayer et commencer à parier !

Il est possible de changer les devises en entrant dans le code
De même pour ajouter un captcha. Il y a une base à intégrer en fonction du service
Il est très simple de créer d'autres modules en complément ou principal type vidéo, galerie, playlist, jeux...

 

Télécharger sur

satoshibox | pastecoin | bitcoinfilebox | en direct

Démo utilisateur | administrateur
 

 



script simple faucet / robinet à bitcoins original
PHP, JS - HTML, CSS
Créez votre faucet en partageant vos revenus publicitaires !
 

- simple et rapide pour l'utilisateur : une adresse bitcoin et un mail
- inscription confirmable par mail
- Multilangue anglais, français
- simple anti-adblock
- système d'affiliation
- backend simple
- léger et sans base de donnée

modules inclus :

- paris : permet de parier à partir ses satoshis avec 1 chance sur 2 jusqu'à 1024
- actualité RSS : Afficher les flux de plusieurs sites
- citations : des phrases spirituelles en français et en anglais

Administration :

- gestion de la mémoire
- détails des utilisateurs
- supervision des sommes genérées
- statistiques journalières et heure par heure
- demandes de virement
- édition des encards publicitaires ou modules

Configuration :

- satoshis par defaut
- durée entre deux claims
- plusieurs pramètres
- durée en entre deux paris
- mise maximum
- contrôle de la caisse
- montant du withdraw
- satoshis de bienvenue
- satoshis de parrainage
- liens de referal
- nom et adresse du site
- informations mail
- fermer le site temporairement
- ouvrir les inscriptions
- masquer les publicités
- confirmer les inscription par mail
- session par cookies
- mode APCu
- ajouter des modules

ajouter plus de langues :

utiliser comme base avec "en" le code langue :
lang_en.php, faq_en.php et mod_phrases_en.php

J'en fait des caisses hein ? mais c'est juste un faucet PHP
Pour les nanani nanana, voyez avec Paul

 

Télécharger sur

satoshibox | pastecoin | bitcoinfilebox | en direct

Démo utilisateur | administrateur

 

Fonctions PHP utiles #3 (multilangue)

function lng ($t, $v=array(), $u=array(), $c=0) {
	global $langue;
	while ($c < count($v)) {
		$u[$c] = '$'.$c++;
		}
	return str_replace($u, $v, $langue[$t]);
	}


function avecS ($w) {
	return $w > 1 ? 's' : false;
	}


$langue = array(	// français
	'exemple_1' => '$0 a mangé $1 plat$2, sans en laisser une miette.',
	'exemple_2' => 'Exemple sans variable.'
	);

/*$langue = array(	// english
	'exemple_1' => '$0 has eaten $1 dishe$2, without leaving a crumb.',
	'exemple_2' => 'example without variable'
	);*/


echo lng('exemple_1', array('Mathias', 2, avecS(2)));
// retourne : Mathias a mangé 2 plats, sans en laisser une miette.

echo lng('exemple_2');
// retourne : Exemple sans variable.

Fonctions PHP utiles #2 (détecter la langue d'un texte)

$lang_detect = array(		// mots les plus usés par langues
	'zh' => array('我','你','的','是','了','他','么','们','在','有','这','那','不','什','个','来','要','就','一','人','。'),
	'en' => array('the','of','and','to','a','in','is','you','are','for','that','or','it','as','be','on','your','with','can','have'),
	'es' => array('de','que','no','a','la','el','y','es','en','lo','un','qué','por','me','una','te','se','los','con','para'),
	'hi' => array('की','और','एक','तक','में','है','आप','कि','यह','वह','था','लिए','पर','केवल','सदा','साथ','उसके','वे','मैं','बाद'),
	'fr' => array('je','de','est','pas','le','vous','la','tu','que','un','il','et','à','a','ne','les','ce','en','on','ça'),
	'pt' => array('que','o','não','de','a','é','você','e','eu','um','se','para','está','uma','me','com','por','ele','em','isso'),
	'ar' => array('لا','من','هذا','أن','في','أنا ','على','ما','هل','يا','و','لقد','ذلك','ماذا','أنت','هنا','لم','إلى','نعم','كان'),
	'id' => array('aku','tidak','yang','kau','ini','itu','di','dan','akan','apa','dia','anda','kita','untuk','saya','mereka','ada','bisa','tahu','dengan'),
	'ru' => array('я','не','что','в','и','ты','это','на','с','он','вы','да','как','мы','мне','а','меня','у','нет','так'),
	'nl' => array('ik','je','het','de','is','dat','een','niet','en','wat','van','we','in','ze','op','te','hij','zijn','er','maar'),
	'ja' => array('の','に','は','て','を','が','だ','た','する','と','ます','で','ない','いる','も','ある','・','です','「','」'),
	'it' => array('non','e','che','di','la','è','il','un','a','per','in','una','sono','mi','ho','si','lo','ha','ma','ti'),
	);

function clean_text($t) {
	$pattern = array("\n","+",",",".","’","'","\"","&","!","?",":",";","#","~","=","/","$","£","€","^","(",")","[","]","{","}","_","<",">"	,"。");
	return str_replace($pattern, ' ', mb_convert_case($t, MB_CASE_LOWER, "UTF-8"));
	}

function language_detect($t, $a) {	// text, arrays
	$t = clean_text($t);
	$res = array();
	if (strstr($t, ' '))
		$words = explode(' ', $t);
	else {
		$words = str_split($t);	// ne sert pas pour le chinois, voir plus bas
		//$words = array();
		//if (preg_match("/\p{Han}+/u", $t))
		//	$res['zh'] = 100;
		}
	foreach ($words as $w) {	// pour chaque mot
		foreach ($a as $k => $l) {	// à chaque langue
			if (in_array($w, $l))	// si le mot est contenu
				$res[$k]++;
			}
		}
	arsort($res);
	$kres = array_keys($res);
	$l = array_shift($kres);
	if (count($res) == 0 and preg_match("/\p{Han}+/u", $t))	// chinois
		return 'zh';
	elseif (count($res) > 0)
		return $l;		// langue trouvée
	else
		return 'en';	// langue par défaut
	}


// EXEMPLE
$texte = 'Si tu vas à Rio, N\'oublie pas de monter là-haut ; Dans un petit village, Caché sous les fleurs sauvages';

echo language_detect($texte, $lang_detect);		// retourne fr

Fonctions PHP utiles #1

// met au pluriel : retour ou non : s ou aux/al - Ex. 2.' anim'.avecs(2,1) retourne 2 animaux
function avecs ($v, $al=false) {		// valeur, s -> aux
	if ($v > 1) {
		return $al ? 'aux' : 's';
		}
	else if ($al)
		return 'al';
	}

// Ajoute une ligne à un fichier log - Ex. addlog('[date] texte', 'log/visites.log')
function addlog ($l, $fi) {	// texte, fichier
$r = $l."\r\n";
	if ($f = fopen($fi, 'a')) {
		fprintf($f, $r);
		fclose($f);
		return true;
		}
	}

// Couleur d'un pourcentage (du rouge 0 au vert 100) - retourne rgba(x,x,0,x)
function rgb ($p, $op=1) {	// pourcentage, opacité
	$cr = 204 - round(153 / 100 * $p);
	$cg = round(204 / 100 * $p);
	return 'rgba('.$cr.','.$cg.',0,'.$op.')';
	}