Outils du site


fr:developpers:documentation_library_formula

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
fr:developpers:documentation_library_formula [2021/01/27 18:51] – [Ressources] pitch314fr:developpers:documentation_library_formula [2021/01/27 22:23] – [Ogame formula Library] pitch314
Ligne 5: Ligne 5:
     * programmation terminée      * programmation terminée 
   * côté JS (js/ogame_formula.js), les fonctions nécessaires à des utilisations dynamiques (production, consommation, temps, coût, etc.)   * côté JS (js/ogame_formula.js), les fonctions nécessaires à des utilisations dynamiques (production, consommation, temps, coût, etc.)
-    * programmation en cours +    * programmation terminée
  
 <note important>En Javascript, les tableaux sont des objets et sont manipulés par référence (comme en C), pointant vers la localisation du tableau. <note important>En Javascript, les tableaux sont des objets et sont manipulés par référence (comme en C), pointant vers la localisation du tableau.
Ligne 29: Ligne 29:
 </code> </code>
 <code Javascript JS> <code Javascript JS>
-const DEFAULT_ARRAY_RESSOURCE = {'M':0,'C':0,'D':0,'NRJ':0};    //Défaut en global +/** Voir description des fonctions côté PHP **/ 
-Object.freeze(DEFAULT_ARRAY_RESSOURCE);+function ogame_arrayRessource($metal$cristal$deut$NRJ 0);
  
 //Exemples d'utilisations //Exemples d'utilisations
-var a = DEFAULT_ARRAY_RESSOURCE;   //à ne pas faire en JS !!! a est DEFAULT_ARRAY_RESSOURCE sont le même tableau +var result = ogame_arrayRessource(0,0,0)
-//En mode strict, lève une erreur ! +result['M'44;
- +
-//Pour ce tableau de base, nous sugérons simplement : +
-var result = {M:0,C:0,D:0,NRJ:0}+
-//Sinon à garder en mémoire pour des tableaux plus complexe : +
-var a JSON.parse(JSON.stringify(DEFAULT_ARRAY_RESSOURCE));+
 </code> </code>
 +
 ==== Nom de base ==== ==== Nom de base ====
 Comment être sûr d'un nom d'un bâtiment ou autre élément OGame enregistré avec OGSpy, et éviter de les redéfinir au risque d'un oublier ? Comment être sûr d'un nom d'un bâtiment ou autre élément OGame enregistré avec OGSpy, et éviter de les redéfinir au risque d'un oublier ?
Ligne 160: Ligne 156:
         //Faire quelque chose spécifique pour les vaisseaux         //Faire quelque chose spécifique pour les vaisseaux
     }     }
 +}
 +</code>
 +<code Javascript JS>
 +/** Voir description des fonctions côté PHP **/
 +function ogame_getElementNames();
 +function ogame_isElement(nom);
 +
 +//Exemples (utilisation comme en PHP)
 +var names = ogame_getElementNames();
 +for(var elem in names['RESS']) {    //elem ici vaut un entier pour parcourir les noms
 +    elem = names['RESS'][elem]
 +    result['prod_reel'][elem]  = Math.floor(result['prod_base'][elem]);
 } }
 </code> </code>
Ligne 199: Ligne 207:
  
 </code> </code>
 +<code Javascript JS>
 +/** Voir description des fonctions côté PHP **/
 +function ogame_productionPlanet(user_building, user_technology=null, user_data=null, server_config=null);
 +
 +//Exemples d'utilisations
 +console.log(ogame_productionPlanet({M:38,C:34,D:34,CES:28,CEF:20,CEF_percentage:80,SAT:2200,FOR:858,FOR_percentage:150,coordinates:'::8',temperature_max:47},{Plasma:19,NRJ:20},{user_class:'COL'}));
 +</code>
 +
 C'est cette fonction qui calcule la production en prenant tout en compte. C'est aussi la seule permettant de connaître la prod des différents bonus. C'est cette fonction qui calcule la production en prenant tout en compte. C'est aussi la seule permettant de connaître la prod des différents bonus.
 Sinon pour la production de base d'un bâtiment Sinon pour la production de base d'un bâtiment
Ligne 230: Ligne 246:
  */  */
 function ogame_production_foreuse_max($mine_M, $mine_C, $mine_D, $user_data); function ogame_production_foreuse_max($mine_M, $mine_C, $mine_D, $user_data);
 +</code>
 +<code Javascript JS>
 +/** Voir description des fonctions côté PHP **/
 +function ogame_productionBuilding(building, user_building=null, user_technology=null, user_data=null, server_config=null);
 +function ogame_productionForeuseMax(mine_M, mine_C, mine_D, user_data);
 +
 +//Exemples d'utilisations
 +console.log(ogame_productionBuilding('base',{M:38,CES:38,coordinates:'::8'},null,null,{speed_uni:8}))
 </code> </code>
  
Ligne 247: Ligne 271:
 $cout = ogame_element_cout('EDLM', 1000); // Le prix en ressource de 1000 EDLM $cout = ogame_element_cout('EDLM', 1000); // Le prix en ressource de 1000 EDLM
 </code> </code>
 +<code Javascript JS>
 +/** Voir description des fonctions côté PHP **/
 +function ogame_elementCoutBase(name = 'all');
 +</code>
 +
 Afin de connaître le nombre total de ressource investit il faut utilisation la fonction suivante : Afin de connaître le nombre total de ressource investit il faut utilisation la fonction suivante :
 <code php PHP> <code php PHP>
Ligne 261: Ligne 290:
 $cout = ogame_element_cumulate('M', 39); // Le nombre de ressource investit, en cumul, pour une M39 $cout = ogame_element_cumulate('M', 39); // Le nombre de ressource investit, en cumul, pour une M39
 </code> </code>
 +
 Néanmoins, dans le calcul des points d'une planète, il sera plus simple d'utiliser la fonction suivante : Néanmoins, dans le calcul des points d'une planète, il sera plus simple d'utiliser la fonction suivante :
 <code php PHP> <code php PHP>
Ligne 360: Ligne 390:
         break;         break;
 } }
 +</code>
 +<code Javascript JS>
 +/** Voir description des fonctions côté PHP **/
 +function ogame_fleetDistance(a, b, user_techno=null, classe='none', server_config=null);
 +
 +//Exemples d'utilisations
 +var distance  = ogame_fleetDistance(coord_from, coord_to, server_config);
 </code> </code>
  
Ligne 370: Ligne 407:
  */  */
 function ogame_fleet_conso_statio($conso, $hour); function ogame_fleet_conso_statio($conso, $hour);
 +</code>
 +<code Javascript JS>
 +/** Voir description des fonctions côté PHP **/
 +function ogame_fleetConsoStatio(conso, hour);
 </code> </code>
  
Ligne 400: Ligne 441:
 ogame_fleet_send('1:1:1','1:1:1',array('PT'=>260),100,array('RC'=>20,'RI'=>17,'PH'=>16),'COL')); ogame_fleet_send('1:1:1','1:1:1',array('PT'=>260),100,array('RC'=>20,'RI'=>17,'PH'=>16),'COL'));
 echo gmdate('z:H:i:s',$a['time']);  //jour:heure:minute:seconde echo gmdate('z:H:i:s',$a['time']);  //jour:heure:minute:seconde
 +</code>
 +<code Javascript JS>
 +/** Voir description des fonctions côté PHP **/
 +function ogame_fleetSlowestSpeed(fleet, user_techno=null, classe='none');
 +function ogame_fleetSend(coord_from, coord_to, fleet, speed_per=100, user_techno=null, classe='none', server_config=null, type='', hour_mission=0);
 +
 +//Exemples d'utilisations
 +var a=ogame_fleetSend('1:1:1','1:1:1',{'PT':260},100,{'RC':20,'RI':17,'PH':16},'COL');
 +console.log(a); // { conso: 4, time: 117 }
 +var d = new Date(a['time']*1000);
 +console.log((d.getUTCDate()-1)+ ':'+ d.getUTCHours()+':'+d.getUTCMinutes()+':'+d.getUTCSeconds())
 </code> </code>
  
Ligne 435: Ligne 487:
 print_r($detail_PT); print_r($detail_PT);
 // Array( 'nom'=>'PT',structure'=>12000,'Bouclier'=>30,'attaque'=>15,'vitesse'=>54000,'fret'=>11250,'conso'=>20,'civil'=>true,'cout'=>inchangé,'rapidfire'=>inchangé) // Array( 'nom'=>'PT',structure'=>12000,'Bouclier'=>30,'attaque'=>15,'vitesse'=>54000,'fret'=>11250,'conso'=>20,'civil'=>true,'cout'=>inchangé,'rapidfire'=>inchangé)
 +</code>
 +
 +Détails spécifique pour les flottes, sous-partie de PHP, qui n'offre seulement vitesse,fret et conso :
 +<code Javascript JS>
 +/** @brief Return fleet moving details of Ogame vso.
 +  @param[in] string name The name as in Database, all for all element
 +  @return array('vitesse','fret','conso',(bool)'civil')
 + */
 +function ogame_fleetSubDetailsBase(name = 'all');
 +/** @brief Calculates technical data of a fleet or defence.
 +  @return array('nom','vitesse','fret','conso',(bool)'civil') of the wanted fleet.
 + */
 +function ogame_fleetSubDetails(name, user_techno = null, classe = 'none');
 +
 +console.log(ogame_fleetSubDetails('PT',{'Hyp':18,'RC':21,'RI':17,'PH':16},'GEN'));
 </code> </code>
  
Ligne 524: Ligne 591:
  */  */
 function ogame_find_coordinates($string_coord); function ogame_find_coordinates($string_coord);
 +</code>
 +<code Javascript JS>
 +/** Voir description des fonctions côté PHP **/
 +function ogame_findPlanetPosition(coordinates);
 +function ogame_findCoordinates(string_coord);
 </code> </code>
  
 ===== Récapitulatif des prototypes de fonctions de la Ogame formula Library ===== ===== Récapitulatif des prototypes de fonctions de la Ogame formula Library =====
 <code php> <code php>
 +//////////////////////////// BASE fonctions : //////////////////////////////////
 /** @brief Get an Ogame resources array. /** @brief Get an Ogame resources array.
  *    *  
Ligne 740: Ligne 813:
   @return array('nom','structure','bouclier','attaque','vitesse','fret','conso',(array)'rapidfire',(bool)'civil',(array)'cout') of the wanted fleet or defence.   @return array('nom','structure','bouclier','attaque','vitesse','fret','conso',(array)'rapidfire',(bool)'civil',(array)'cout') of the wanted fleet or defence.
       rapidfire=array('PT'=>x, ...) array of all fleet and defence; if x>0 then again else from       rapidfire=array('PT'=>x, ...) array of all fleet and defence; if x>0 then again else from
-      cout=array of ogame_element_cumulate()=array('M','C','D','NRJ)+      cout=array of ogame_element_cumulate()=array('M','C','D','NRJ')
  */  */
 function ogame_elements_details($name, $user_techno = null, $classe = 0); function ogame_elements_details($name, $user_techno = null, $classe = 0);
Ligne 789: Ligne 862:
  */  */
 function ogame_terra_case($level); function ogame_terra_case($level);
 +</code>
 +
 +<code Javascript JS>
 +/** Voir description des fonctions côté PHP **/
 +//////////////////////////// BASE fonctions : //////////////////////////////////
 +/** @return array('M','C','D','NRJ'), default is 0 */
 +function ogame_arrayRessource($metal, $cristal, $deut, $NRJ = 0);
 +function ogame_getElementNames();
 +function ogame_isElement(nom);
 +function ogame_findPlanetPosition(coordinates);
 +function ogame_findCoordinates(string_coord);   /** return array('g','s','p') of int, default is 0 */
 +
 +////////////////////////// PRODUCTION fonctions : //////////////////////////////
 +function ogame_productionPosition(position);
 +function ogame_productionForeuseMax(mine_M, mine_C, mine_D, user_data);
 +function ogame_productionForeuseBonus(user_building, user_data); /** return array('bonus','nb_FOR_maxed') bonus=foreuse bonus coefficient ; nb_FOR_maxed=limit nb if too much */
 +/** @brief Calculates building/sat/for or base production and consumption.
 + *  
 +  @param[in] string $building        The wanted building/sat/for ('base','M','C','D','CES','CEF','SAT','FOR')
 +  @param[in] array  $user_building   Planet info ('M','C','D','CES','CEF','SAT','FOR','temperature_max','coordinates') 0 as default value
 +  @param[in] array  $user_technology Techno info ('NRJ') 0 as default value
 +  @param[in] array  $user_data       User info for FOR only (array('user_class'=>'COL'/...,'off_geologue' or 'off_full')
 +  @param[in] array  $server_config   Ogame universe info ('speed_uni',(bool)'final_calcul') / final_calcul permet de déterminer si les valeurs retournées seront manipulées avec les % de production ressources, et donc sans arrondi.
 +  @return array('M','C','D','NRJ') of production
 +*/
 +function ogame_productionBuilding(building, user_building=null, user_technology=null, user_data=null, server_config=null);
 +/** @brief Calculates planet production and consumption.
 + *  
 +  @param[in] array $user_building   Planet info ('M','C','D','CES','CEF','SAT','FOR','temperature_max','coordinates','M_percentage','C_percentage','D_percentage','CES_percentage','CEF_percentage','Sat_percentage','FOR_percentage',array 'booster_tab') 0 as default value
 +  @param[in] array $user_technology Techno info ('NRJ','Plasma'
 +  @param[in] array $user_data       User info ('user_class'=>'COL'/...,'off_commandant','off_amiral','off_ingenieur','off_geologue', or 'off_full')
 +  @param[in] array $server_config   Ogame universe info ('speed_uni')
 +  @return array('prod_reel, // (array ress) Production réel en prenant en compte le ratio (M/C/D ressources, NRJ prod moins la conso)
 +      'prod_theorique',     // (array ress) Producton théorique M/C/D (ratio=1, 100%)
 +      'ratio',              // (float) le ratio de production NRJ (prod_E / conso_E)
 +      'conso_E','prod_E',   // (float) Production NRJ prod_E > 0, conso_E < 0
 +      'prod_CES','prod_CEF','prod_SAT', // (array ress) production énergie de chaque unité ('D' de prod_CEF contient la conso en deut de la CEF)
 +      'prod_FOR',           // (array ress) production M/C/D et conso NRJ
 +      'prod_M','prod_C','prod_D','prod_base', // (array ress) Production ressources de chaque mine (M/C/D) et leur conso (NRJ)
 +      'prod_booster','prod_off','prod_Plasma','prod_classe',   // (array ress) Production des bonus
 +      'M','C','D','NRJ', =>héritage du type ressource pour les valeurs retournées.
 +      'nb_FOR_maxed',       // (int) Nombre max de foreuse utilisées
 +      ) à part ratio/conso_E/prod_E (float) les autres sont array('M','C','D','NRJ')
 + */
 +function ogame_productionPlanet(user_building, user_technology=null, user_data=null, server_config=null);
 +
 +//////////////////////////// FLOTTE fonctions : ////////////////////////////////
 +/** return array('vitesse','fret','conso',(bool)'civil') */
 +function ogame_arraySubDetail(vitesse=0, fret=0, conso=0, civil=true);
 +/** @brief Return fleet moving details of Ogame vso.
 +  @param[in] string name The name as in Database, all for all element
 +  @return array('vitesse','fret','conso',(bool)'civil')
 + */
 +function ogame_fleetSubDetailsBase(name = 'all');
 +/** @brief Calculates technical data of a fleet or defence.
 +  @return array('nom','vitesse','fret','conso',(bool)'civil') of the wanted fleet.
 + */
 +function ogame_fleetSubDetails(name, user_techno = null, classe = 'none');
 +function ogame_fleetConsoStatio(conso, hour);
 +function ogame_fleetSlowestSpeed(fleet, user_techno=null, classe='none');
 +function ogame_fleetDistance(a, b, user_techno=null, classe='none', server_config=null);
 +function ogame_fleetSend(coord_from, coord_to, fleet, speed_per=100, user_techno=null, classe='none', server_config=null, type='', hour_mission=0);
 +
 +//////////////////////////// COUT fonctions : //////////////////////////////////
 +function ogame_elementCoutBase(name = 'all');
 </code> </code>