Kommunauty
Connexion
Inscription

Colonisation impossible en 1:1:X sauf admin


algerino77 Messages : 183

Salut!!

Je me posais une petite question, je voulais savoir si c’était possible de faire en sorte que

seul les admins possèdent des planètes en 1:1:X.

Sachant que lors d'une inscription, pareil, la planète doit apparaître dans un système différent de 1:1:X.

Pour résumer:

ADMIN: peut coloniser partout. Lors de l'inscription, la planète pop n'importe ou.
JOUEURS: peut coloniser partout sauf en 1:1:X. Lors de l'inscription, la planète ne pop pas en 1:1:X.

Merci d'avance pour votre aides !!

mercredi 13 janvier 2016

Homer Messages : 1823

Oui tu peux, dans ta classe MissionCaseColonisation, tu vérifie l'emplacement, et si c'est en 1:1:x et que ce n'est pas un admin alors tu refuse.

Et pour l’inscription, j'avais codé un truc comme ça, dans index.php :

$LastSettedGalaxyPos = mt_rand(1,MAX_GALAXY_IN_WORLD);
$LastSettedSystemPos = mt_rand(1,MAX_SYSTEM_IN_GALAXY);
$LastSettedPlanetPos = mt_rand(4, MAX_PLANET_IN_SYSTEM);

Pour un positionnement aléatoire dans le jeu.

Bien sur, il faut vérifie aussi qu'aucune planète ne se trouve déjà sur cet emplacement

mercredi 13 janvier 2016 (Dernière édition mercredi 13 janvier 2016)

algerino77 Messages : 183

Ok, donc pour le placement aléatoire:

Je remplace ca:

while ($PlanetID === false) {
$Planet = mt_rand(4, 12);

if ($LastSettedPlanetPos < 3) {
$LastSettedPlanetPos += 1;
} else {
if ($LastSettedSystemPos == MAX_SYSTEM_IN_GALAXY) {
$LastSettedGalaxyPos += 1;
$LastSettedSystemPos = 1;
$LastSettedPlanetPos = 1;
} else {
$LastSettedSystemPos += 1;
$LastSettedPlanetPos = 1;
}

if($LastSettedGalaxyPos  > $CONF['max_system'])
$LastSettedGalaxyPos = 1;
}

$PlanetID = CreateOnePlanetRecord($LastSettedGalaxyPos, $LastSettedSystemPos, $Planet, $UserUni, $NewUser, $UserPlanet, true);
}

Par ca:

while ($PlanetID === false) {
$Planet = mt_rand(4, 12);

if ($LastSettedPlanetPos < 3) {
$LastSettedPlanetPos = mt_rand(4, MAX_PLANET_IN_SYSTEM);
} else {
if ($LastSettedSystemPos == MAX_SYSTEM_IN_GALAXY) {
$LastSettedGalaxyPos = mt_rand(1,MAX_GALAXY_IN_WORLD);
                                                        $LastSettedSystemPos = mt_rand(1,MAX_SYSTEM_IN_GALAXY);
                                                        $LastSettedPlanetPos = mt_rand(4, MAX_PLANET_IN_SYSTEM);
} else {
$LastSettedSystemPos = mt_rand(1,MAX_SYSTEM_IN_GALAXY);
$LastSettedPlanetPos = mt_rand(4, MAX_PLANET_IN_SYSTEM);
}

if($LastSettedGalaxyPos  > $CONF['max_system'])
$LastSettedGalaxyPos = 1;
}

$PlanetID = CreateOnePlanetRecord($LastSettedGalaxyPos, $LastSettedSystemPos, $Planet, $UserUni, $NewUser, $UserPlanet, true);
}

??

Et pour la colonisation, je dois rajouter un truc du style:

		if ($GalaxyPos = 1 && $RangJoueur=1)
{
$TheMessage = sprintf($LNG['sys_colo_notfree'], GetTargetAdressLink($this->_fleet, ''));
$this->UpdateFleet('fleet_mess', 1);
}

Pour les variables GalaxyPos et RangJouer j'ai mis ca à titre d'exemple, ce n'est pas les bonnes

mercredi 13 janvier 2016

Homer Messages : 1823

Oui dans l'idée c'est ça pour la colonisation, mais il faut surveiller et la galaxy, et le système, pour limité au 1:1

Pour l'inscription, j'ai ça pour le code :

while ($PlanetID === false) 
{
// MODIF PAR HOMER - POSITION ALEATOIRE DES COLONIES
$LastSettedGalaxyPos = mt_rand(1,MAX_GALAXY_IN_WORLD);
$LastSettedSystemPos = mt_rand(1,MAX_SYSTEM_IN_GALAXY);
$LastSettedPlanetPos = mt_rand(4, MAX_PLANET_IN_SYSTEM);


while( db->uniquequery("S ELECT id FROM ".PLANETS." WHERE galaxy = ".$LastSettedGalaxyPos." && system = ".$LastSettedSystemPos." && planet = ".$LastSettedPlanetPos.";"))
{
$LastSettedSystemPos++;
}

$PlanetID = CreateOnePlanetRecord($LastSettedGalaxyPos, $LastSettedSystemPos, $LastSettedPlanetPos, $UserUni, $NewUser, $UserPlanet, true);
}

Tu remarquera un espace dans la requete sql " S ELECT ", si je ne le met pas, je peux pas poster le msg

mercredi 13 janvier 2016 (Dernière édition mercredi 13 janvier 2016)

algerino77 Messages : 183

Ok merci pour le code !

Je vais tester pour la colo, je te tiens au jus

EDIT: le code fait bugger la page index.php, erreur 500 du navigateur sans autres info

Pour la colo, je galère à trouver les variables, tu as une idée ?

mercredi 13 janvier 2016 (Dernière édition mercredi 13 janvier 2016)

algerino77 Messages : 183

Petit UP

mercredi 27 janvier 2016

Homer Messages : 1823

Oups, je n'avais pas vu ton msg.

Donne la partie du code concerné

mercredi 27 janvier 2016

algerino77 Messages : 183

C'est la requete SQL qui bug, elle produit une erreur 500 sans autres indiquations

while( db->uniquequery("S ELECT id FROM ".PLANETS." WHERE galaxy = ".$LastSettedGalaxyPos." && system = ".$LastSettedSystemPos." && planet = ".$LastSettedPlanetPos.";"))
{
$LastSettedSystemPos++;
}
mercredi 27 janvier 2016

Homer Messages : 1823

tu as bien virer l'espace dans le select ?

mercredi 27 janvier 2016

algerino77 Messages : 183
Homer :

tu as bien virer l'espace dans le select ?

Oui

mercredi 27 janvier 2016

Page suivante »