merge from upstream
|
@ -1,47 +0,0 @@
|
|||
<?php
|
||||
/* Copyright (C) 2009 Winch Gate Property Limited
|
||||
*
|
||||
* This file is part of ryzom_api.
|
||||
* ryzom_api is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* ryzom_api is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with ryzom_api. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
require_once(RYAPI_PATH.'client/config.php');
|
||||
|
||||
// Og (non-ryzom.com) method
|
||||
function ryzom_authenticate_with_serverkey($cid, $name, $authserver, $authkey) {
|
||||
}
|
||||
|
||||
// Ig method
|
||||
function ryzom_authenticate_ingame($cid, $name, $authkey) {
|
||||
if (isset($_SESSION['user']))
|
||||
return true;
|
||||
|
||||
if (ryzom_get_param('user'))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Session method
|
||||
function ryzom_authenticate_with_session($name, $redirect) {
|
||||
if (isset($_SESSION['user']))
|
||||
return true;
|
||||
|
||||
if (ryzom_get_param('user'))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
?>
|
|
@ -1,39 +0,0 @@
|
|||
<?php
|
||||
/* Copyright (C) 2009 Winch Gate Property Limited
|
||||
*
|
||||
* This file is part of ryzom_api.
|
||||
* ryzom_api is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* ryzom_api is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with ryzom_api. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
function ryzom_user_get_info($cid) {
|
||||
if (isset($_SESSION['user']))
|
||||
return $_SESSION['user'];
|
||||
|
||||
$user = unserialize(base64_decode(ryzom_get_param('user')));
|
||||
$_SESSION['user'] = $user;
|
||||
return $user;
|
||||
}
|
||||
|
||||
function ryzom_get_user_id($cid, $name, $creation_date) {
|
||||
if (isset($_SESSION['user']))
|
||||
return $_SESSION['user']['id'];
|
||||
|
||||
$user = unserialize(base64_decode(ryzom_get_param('user')));
|
||||
$_SESSION['user'] = $user;
|
||||
|
||||
return $user['id'];
|
||||
}
|
||||
|
||||
|
||||
?>
|
|
@ -1,3 +0,0 @@
|
|||
<?php
|
||||
|
||||
?>
|
|
@ -1,248 +0,0 @@
|
|||
/* Copyright (C) 2009 Winch Gate Property Limited
|
||||
*
|
||||
* This file is part of ryzom_api.
|
||||
* ryzom_api is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* ryzom_api is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with ryzom_api. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
html, body, form, fieldset, p, div, h1, h2, h3, h4, h5, h6 {
|
||||
margin:0;
|
||||
padding:0;
|
||||
-webkit-text-size-adjust: none;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 14px;
|
||||
background: black;
|
||||
font-family: Helvetica;
|
||||
}
|
||||
|
||||
ul li {
|
||||
padding: 0px 4px 10px 2px;
|
||||
list-style: circle outside;
|
||||
}
|
||||
ol li {
|
||||
padding: 0px 4px 10px 2px;
|
||||
}
|
||||
.ryzom-ui p {
|
||||
padding-bottom:8px;
|
||||
}
|
||||
|
||||
#main {
|
||||
clear: both;
|
||||
padding-top: 0px;
|
||||
overflow:auto;
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
text-align:left
|
||||
}
|
||||
.error {
|
||||
padding:.5em;
|
||||
background:#ff5555;
|
||||
color:white;
|
||||
font-weight:bold
|
||||
}
|
||||
/*-----------------------------
|
||||
ORIENTATION
|
||||
-----------------------------*/
|
||||
|
||||
.content_wide,
|
||||
.content_normal {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.show_normal {
|
||||
width: 320px;
|
||||
}
|
||||
|
||||
.show_wide {
|
||||
width: 480px;
|
||||
}
|
||||
|
||||
.show_wide .content_wide,
|
||||
.show_normal .content_normal {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* ---------------------- */
|
||||
|
||||
|
||||
.ryzom-ui {
|
||||
color: white;
|
||||
}
|
||||
.ryzom-ui input, .ryzom-ui select {
|
||||
border-top: 1px solid #030403;
|
||||
border-right: 1px solid #6e7f57;
|
||||
border-bottom: 1px solid #889e6c;
|
||||
border-left: 1px solid #272d1f;
|
||||
background-color: #37402b;
|
||||
color: #ddd;
|
||||
font-size: 16px;
|
||||
margin: 2px 0 5px 0;
|
||||
}
|
||||
.ryzom-ui input[type=text] {
|
||||
width: 96%;
|
||||
}
|
||||
|
||||
.ryzom-ui textarea {
|
||||
width: 96%;
|
||||
background-color: black;
|
||||
color: white;
|
||||
font-size: 16px;
|
||||
font-family: Helvetica;
|
||||
}
|
||||
/* input[type=submit] will make IE6 to ignore whole CSS rule, so cant combine this with .ryzom-ui-button below */
|
||||
input[type=submit] {
|
||||
border-bottom: 1px solid #030403;
|
||||
border-left: 1px solid #6e7f57;
|
||||
border-top: 1px solid #889e6c;
|
||||
border-right: 1px solid #272d1f;
|
||||
background-color: #435120;
|
||||
}
|
||||
input.ryzom-ui-button, .ryzom-ui-button {
|
||||
border-bottom: 1px solid #030403;
|
||||
border-left: 1px solid #6e7f57;
|
||||
border-top: 1px solid #889e6c;
|
||||
border-right: 1px solid #272d1f;
|
||||
background-color: #435120;
|
||||
}
|
||||
|
||||
a, a:visited {color:orange}
|
||||
|
||||
a:hover {color:orange}
|
||||
|
||||
a.ryzom-ui-button, a.ryzom-ui-button:visited {
|
||||
color: white;
|
||||
padding: 0 .5em;
|
||||
text-decoration: none;
|
||||
}
|
||||
a.ryzom-ui-button:hover {
|
||||
background: #536130;
|
||||
color: #ddd;
|
||||
}
|
||||
/* window without title - just borders */
|
||||
.ryzom-ui-tl {
|
||||
}
|
||||
.ryzom-ui-tr {
|
||||
}
|
||||
.ryzom-ui-t {
|
||||
background-image: url(skin_t.gif);
|
||||
background-repeat: repeat-x;
|
||||
background-position: left top;
|
||||
height: 8px;
|
||||
margin: 0;
|
||||
}
|
||||
/* window with proper header */
|
||||
.ryzom-ui-header .ryzom-ui-tl {
|
||||
margin: 0px 0px;
|
||||
height: 32px;
|
||||
}
|
||||
.ryzom-ui-header .ryzom-ui-tr {
|
||||
height: 32px;
|
||||
}
|
||||
.ryzom-ui-header .ryzom-ui-t {
|
||||
background-image: url(skin_header_m.gif);
|
||||
background-repeat: repeat-x;
|
||||
background-position: left top;
|
||||
padding: 7px 0 0 12px;
|
||||
height: 32px;
|
||||
text-transform: uppercase;
|
||||
color: white;
|
||||
border-top: 1px solid #030403;
|
||||
}
|
||||
/* window body */
|
||||
.ryzom-ui-l {
|
||||
}
|
||||
.ryzom-ui-r {
|
||||
}
|
||||
.ryzom-ui-m {
|
||||
margin: 0 0px;
|
||||
padding: 0px;
|
||||
background-image: url(skin_blank.png);
|
||||
background-repeat: repeat;
|
||||
}
|
||||
.ryzom-ui-body {
|
||||
background-image: url(skin_blank_inner.png);
|
||||
background-repeat: repeat;
|
||||
/* leave 5px room after bottom border */
|
||||
margin: 0 8px 5px 2px;
|
||||
padding: 5px 5px 5px 5px;
|
||||
border-top: 1px solid #030403;
|
||||
border-right: 1px solid #6e7f57;
|
||||
border-bottom: 1px solid #889e6c;
|
||||
border-left: 1px solid #272d1f;
|
||||
}
|
||||
/* window bottom border */
|
||||
.ryzom-ui-bl {
|
||||
height: 8px;
|
||||
}
|
||||
.ryzom-ui-br {
|
||||
height: 8px;
|
||||
}
|
||||
.ryzom-ui-b {
|
||||
height: 8px;
|
||||
margin: 0 8px;
|
||||
}
|
||||
.ryzom-ui-notice {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
color: #999;
|
||||
text-align: center;
|
||||
}
|
||||
a.ryzom-ui-notice, a.ryzom-ui-notice:visited {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
color: #BBB;
|
||||
padding: 0 .5em;
|
||||
text-decoration: underline;
|
||||
}
|
||||
a.ryzom-ui-notice:hover {
|
||||
color: gray;
|
||||
}
|
||||
|
||||
.ryzom-ui-t .ryzom-ui-text-button {
|
||||
font-size: 85%;
|
||||
}
|
||||
a.ryzom-ui-text-button, a:visited.ryzom-ui-text-button {
|
||||
color:#FFFF11;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
.ryzom-ui-text-button {
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
}
|
||||
.ryzom-ui-text-button {
|
||||
padding: 0;margin: 0;
|
||||
border-color: #ff8 #ff3 #ff3 #ff8;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
padding: 0px 4px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.ryzom-ui-wrap-ul {
|
||||
float: left;
|
||||
text-align: center;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.ryzom-ui-wrap-li {
|
||||
float: left;
|
||||
margin: 0 0 10px 5px;
|
||||
width: 6.1em;
|
||||
list-style: none;
|
||||
height: 70px;
|
||||
}
|
Before Width: | Height: | Size: 748 B |
Before Width: | Height: | Size: 129 B |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 130 B |
Before Width: | Height: | Size: 434 B |
Before Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 977 B |
Before Width: | Height: | Size: 477 B |
Before Width: | Height: | Size: 488 B |
Before Width: | Height: | Size: 315 B |
Before Width: | Height: | Size: 99 B |
Before Width: | Height: | Size: 127 B |
Before Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 62 B |
Before Width: | Height: | Size: 6.6 KiB |
|
@ -1 +0,0 @@
|
|||
<?php echo "api"; ?>
|
|
@ -18,18 +18,22 @@
|
|||
require_once("include/functions_inc.php");
|
||||
require_once("class/Entity_abstract.php");
|
||||
|
||||
$logto = "std";
|
||||
|
||||
if(!$_REQUEST['file']) {
|
||||
$_REQUEST['file'] = $argv[1];
|
||||
|
||||
$logto = $argv[2];
|
||||
}
|
||||
|
||||
if($CONF['logging'] == true) {
|
||||
require_once("class/Logfile_class.php");
|
||||
$log = new Logfile($CONF['logfile']);
|
||||
$log = new Logfile($CONF['logfile'],$logto);
|
||||
}
|
||||
|
||||
$log->logf("File: '".$_REQUEST['file']."'");
|
||||
|
||||
$log->logf("Starting up... ",false);
|
||||
#$log->logf("Starting up... ",false);
|
||||
|
||||
if(!$_REQUEST['file']) {
|
||||
$log->logf("ERROR: no file given! EXITING!");
|
||||
|
@ -52,6 +56,8 @@
|
|||
require_once("class/XMLnode_class.php");
|
||||
require_once("class/XMLfile_class.php");
|
||||
require_once("class/Stats_class.php");
|
||||
|
||||
$atom_insert = array();
|
||||
|
||||
$_CACHE = new ValueCache();
|
||||
|
||||
|
@ -72,7 +78,7 @@
|
|||
$tmp = explode("/",$_REQUEST['file']);
|
||||
$tmp2 = explode("_",$tmp[(sizeof($tmp)-1)]);
|
||||
|
||||
$DBc->database($CONF['char_mysql_database']);
|
||||
$DBc->database($CONF['webig_mysql_database']);
|
||||
|
||||
$res = $DBc->sendSQL("SELECT id FROM players WHERE cid='".$DBc->mre($tmp2[1]*16+$tmp2[2])."' AND deleted='0'","ARRAY");
|
||||
#$res[0]['id'] = 1;
|
||||
|
@ -83,52 +89,66 @@
|
|||
}
|
||||
$cdata = array("cid"=>$res[0]['id'],"aid"=>$tmp2[1],"sid"=>$tmp2[2]);
|
||||
|
||||
$DBc_char = new mySQL($CONF['mysql_error']);
|
||||
$DBc_char->connect($CONF['char_mysql_server'],$CONF['char_mysql_user'],$CONF['char_mysql_pass'],$CONF['char_mysql_database']);
|
||||
|
||||
$res = $DBc_char->sendSQL("SELECT race,civilisation,cult FROM characters WHERE char_id='".$DBc_char->mre($tmp2[1]*16+$tmp2[2])."'","ARRAY");
|
||||
$cdata['race'] = $res[0]['race'];
|
||||
$cdata['civ'] = $res[0]['civilisation'];
|
||||
$cdata['cult'] = $res[0]['cult'];
|
||||
|
||||
#$cdata = array("cid"=>1,"aid"=>1,"sid"=>1);
|
||||
|
||||
$DBc->database($CONF['mysql_database']);
|
||||
|
||||
#echo var_export($cdata);
|
||||
|
||||
$log->logf(" done!");
|
||||
#$log->logf(" done!");
|
||||
|
||||
$microstop = explode(' ',microtime());
|
||||
$stop_time = $microstop[0] + $microstop[1];
|
||||
|
||||
$log->logf("Expired time: ".($stop_time - $start_time));
|
||||
#$log->logf("Expired time: ".($stop_time - $start_time));
|
||||
|
||||
#foreach($chars as $cid) {
|
||||
#STEP 1: load and register atoms
|
||||
|
||||
$log->logf("Processing char '".$cdata['cid']."' ...");
|
||||
$log->logf("Processing char '".$cdata['cid']."' (".$cdata['race'].",".$cdata['cult'].",".$cdata['civ'].") ... ");
|
||||
|
||||
$log->logi("Loading and registering Atoms... ",false);
|
||||
#$log->logi("Loading and registering Atoms... ",false);
|
||||
|
||||
$atom_list = array();
|
||||
|
||||
$res = $DBc->sendSQL("SELECT at_id FROM ach_task WHERE NOT EXISTS (SELECT * FROM ach_player_task WHERE apt_player='".$cdata['cid']."' AND apt_task=at_id) AND at_dev='0'","ARRAY");
|
||||
foreach($res as $task) {
|
||||
$tmps = 0;
|
||||
|
||||
#$res = $DBc->sendSQL("SELECT at_id FROM ach_task WHERE NOT EXISTS (SELECT * FROM ach_player_task WHERE apt_player='".$cdata['cid']."' AND apt_task=at_id) AND at_dev='0' AND (NOT EXISTS (SELECT * FROM ach_task_tie_align WHERE atta_task=at_id) OR EXISTS (SELECT * FROM ach_task_tie_align WHERE atta_task=at_id AND atta_alignment LIKE '".$cdata['cult'].'|'.$cdata['civ']."'))","ARRAY");
|
||||
#foreach($res as $task) {
|
||||
//get unfinished atoms belonging to unfinished objectives
|
||||
$res2 = $DBc->sendSQL("SELECT ach_atom.* FROM ach_atom,ach_objective WHERE ao_task='".$task['at_id']."' AND ao_id=atom_objective AND NOT EXISTS (SELECT * FROM ach_player_objective WHERE apo_player='".$cdata['cid']."' AND apo_objective=ao_id)","ARRAY");
|
||||
$res2 = $DBc->sendSQL("SELECT ach_atom.* FROM ach_atom,ach_objective,ach_task WHERE ao_task=at_id AND ao_id=atom_objective AND NOT EXISTS (SELECT * FROM ach_player_objective WHERE apo_player='".$cdata['cid']."' AND apo_objective=ao_id) AND NOT EXISTS (SELECT * FROM ach_player_task WHERE apt_player='".$cdata['cid']."' AND apt_task=at_id) AND at_dev='0' AND (NOT EXISTS (SELECT * FROM ach_task_tie_align WHERE atta_task=at_id) OR EXISTS (SELECT * FROM ach_task_tie_align WHERE atta_task=at_id AND atta_alignment LIKE '".$cdata['cult'].'|'.$cdata['civ']."'))","ARRAY");
|
||||
foreach($res2 as $atom) {
|
||||
$a = new Atom($atom,$cdata);
|
||||
$atom_list[] = $a;
|
||||
$atom_list[] = $a;
|
||||
$a->register();
|
||||
}
|
||||
}
|
||||
|
||||
$tmps += sizeof($res2);
|
||||
#}
|
||||
|
||||
$log->logf("loaded atoms: ".$tmps);
|
||||
|
||||
$statsdb = new Stats();
|
||||
$statsdb->register();
|
||||
|
||||
$log->logf("done!");
|
||||
#$log->logf("done!");
|
||||
|
||||
$log->logf("Memory load: ".memory_get_usage()." bytes");
|
||||
#$log->logf("Memory load: ".memory_get_usage()." bytes");
|
||||
$microstop = explode(' ',microtime());
|
||||
$stop_time = $microstop[0] + $microstop[1];
|
||||
|
||||
$log->logf("Expired time: ".($stop_time - $start_time));
|
||||
#$log->logf("Expired time: ".($stop_time - $start_time));
|
||||
|
||||
$log->logi("Driving data... ",false);
|
||||
#$log->logi("Driving data... ",false);
|
||||
|
||||
#STEP 2: drive data
|
||||
$_CACHE->setChar($cdata);
|
||||
|
@ -140,8 +160,21 @@
|
|||
$_DISPATCHER->dispatchValue("sid",$cdata['sid']);
|
||||
$_DATASOURCE->drive($cdata);
|
||||
|
||||
$statsdb->writeData();
|
||||
|
||||
if(sizeof($atom_insert) > 0) {
|
||||
$qry = "INSERT INTO ach_player_atom (apa_atom,apa_player,apa_date,apa_expire,apa_state,apa_value) VALUES ".implode(',',$atom_insert);
|
||||
|
||||
$DBc->sendSQL($qry,"NONE");
|
||||
}
|
||||
|
||||
$log->logf("Inserting atom data: ".sizeof($atom_insert));
|
||||
|
||||
#$log->logf("done!");
|
||||
#$log->logf("Daily stats check/save... ",false);
|
||||
|
||||
//save daily stats
|
||||
$res = $DBc->sendSQL("SELECT COUNT(*) as anz FROM stat_daily WHERE sdm_day='".date("Y-m-d",time())."'","ARRAY");
|
||||
$res = $DBc->sendSQL("SELECT COUNT(*) as anz FROM stat_daily WHERE sd_day='".date("Y-m-d",time())."'","ARRAY");
|
||||
if($res[0]['anz'] == 0) {
|
||||
$res = $DBc->sendSQL("SELECT SUM(sp_money) as all_money, AVG(sp_money) as avg_money, COUNT(*) as playercount FROM app_achievements.stat_players as s, webig.players as p, ring_live.characters as c, nel.user as n WHERE s.sp_char = p.id AND p.cid = c.char_id AND c.user_id = n.uid AND n.privilege=''","ARRAY");
|
||||
|
||||
|
@ -149,45 +182,48 @@
|
|||
|
||||
$res3 = $DBc->sendSQL("SELECT SUM(sp_yubototal) as all_yubo, AVG(sp_yubototal) as avg_yubo FROM app_achievements.stat_players as s, webig.players as p, ring_live.characters as c, nel.user as n WHERE s.sp_char = p.id AND p.cid = c.char_id AND c.user_id = n.uid AND n.privilege=''","ARRAY");
|
||||
|
||||
$res4 = $DBc->sendSQL("SELECT sp_yubototal FROM app_achievements.stat_players as s, webig.players as p, ring_live.characters as c, nel.user as n WHERE s.sp_char = p.id AND p.cid = c.char_id AND c.user_id = n.uid AND n.privilege='' ORDER by sp_money ASC LIMIT ".floor($res[0]['playercount']/2).",1","ARRAY");
|
||||
$res4 = $DBc->sendSQL("SELECT sp_yubototal FROM app_achievements.stat_players as s, webig.players as p, ring_live.characters as c, nel.user as n WHERE s.sp_char = p.id AND p.cid = c.char_id AND c.user_id = n.uid AND n.privilege='' ORDER by sp_yubototal ASC LIMIT ".floor($res[0]['playercount']/2).",1","ARRAY");
|
||||
|
||||
$res5 = $DBc->sendSQL("SELECT SUM(sp_mekcount) as all_mek, AVG(sp_mekcount) as avg_mek FROM app_achievements.stat_players as s, webig.players as p, ring_live.characters as c, nel.user as n WHERE s.sp_char = p.id AND p.cid = c.char_id AND c.user_id = n.uid AND n.privilege=''","ARRAY");
|
||||
|
||||
$res6 = $DBc->sendSQL("SELECT sp_mekcount FROM app_achievements.stat_players as s, webig.players as p, ring_live.characters as c, nel.user as n WHERE s.sp_char = p.id AND p.cid = c.char_id AND c.user_id = n.uid AND n.privilege='' ORDER by sp_money ASC LIMIT ".floor($res[0]['playercount']/2).",1","ARRAY");
|
||||
$res6 = $DBc->sendSQL("SELECT sp_mekcount FROM app_achievements.stat_players as s, webig.players as p, ring_live.characters as c, nel.user as n WHERE s.sp_char = p.id AND p.cid = c.char_id AND c.user_id = n.uid AND n.privilege='' ORDER by sp_mekcount ASC LIMIT ".floor($res[0]['playercount']/2).",1","ARRAY");
|
||||
|
||||
$res7 = $DBc->sendSQL("SELECT SUM(sp_maxlevel) as all_lvl, AVG(sp_maxlevel) as avg_lvl FROM app_achievements.stat_players as s, webig.players as p, ring_live.characters as c, nel.user as n WHERE s.sp_char = p.id AND p.cid = c.char_id AND c.user_id = n.uid AND n.privilege=''","ARRAY");
|
||||
|
||||
$res8 = $DBc->sendSQL("SELECT sp_maxlevel FROM app_achievements.stat_players as s, webig.players as p, ring_live.characters as c, nel.user as n WHERE s.sp_char = p.id AND p.cid = c.char_id AND c.user_id = n.uid AND n.privilege='' ORDER by sp_money ASC LIMIT ".floor($res[0]['playercount']/2).",1","ARRAY");
|
||||
$res8 = $DBc->sendSQL("SELECT sp_maxlevel FROM app_achievements.stat_players as s, webig.players as p, ring_live.characters as c, nel.user as n WHERE s.sp_char = p.id AND p.cid = c.char_id AND c.user_id = n.uid AND n.privilege='' ORDER by sp_maxlevel ASC LIMIT ".floor($res[0]['playercount']/2).",1","ARRAY");
|
||||
|
||||
$res9 = $DBc->sendSQL("SELECT SUM(sp_itemcount) as all_item, AVG(sp_itemcount) as avg_item FROM app_achievements.stat_players as s, webig.players as p, ring_live.characters as c, nel.user as n WHERE s.sp_char = p.id AND p.cid = c.char_id AND c.user_id = n.uid AND n.privilege=''","ARRAY");
|
||||
|
||||
$res10 = $DBc->sendSQL("SELECT sp_itemcount FROM app_achievements.stat_players as s, webig.players as p, ring_live.characters as c, nel.user as n WHERE s.sp_char = p.id AND p.cid = c.char_id AND c.user_id = n.uid AND n.privilege='' ORDER by sp_money ASC LIMIT ".floor($res[0]['playercount']/2).",1","ARRAY");
|
||||
$res10 = $DBc->sendSQL("SELECT sp_itemcount FROM app_achievements.stat_players as s, webig.players as p, ring_live.characters as c, nel.user as n WHERE s.sp_char = p.id AND p.cid = c.char_id AND c.user_id = n.uid AND n.privilege='' ORDER by sp_itemcount ASC LIMIT ".floor($res[0]['playercount']/2).",1","ARRAY");
|
||||
|
||||
$DBc->sendSQL("INSERT IGNORE INTO stat_daily (sd_day,sd_players,sd_money_avg,sd_money_total,sd_money_mean,sd_mek_total,sd_mek_avg,sd_mek_mean,sd_yubo_total,sd_yubo_avg,sd_yubo_mean,sd_lvl_total,sd_lvl_avg,sd_lvl_mean,sd_item_total,sd_item_avg,sd_item_mean) VALUES ('".date("Y-m-d",time())."','".$res[0]['playercount']."','".$res[0]['avg_money']."','".$res[0]['all_money']."','".$res2[0]['sp_money']."','".$res5[0]['all_mek']."','".$res5[0]['avg_mek']."','".$res6[0]['sp_mekcount']."','".$res3[0]['all_yubo']."','".$res3[0]['avg_yubo']."','".$res4[0]['sp_yubototal']."','".$res7[0]['all_lvl']."','".$res7[0]['avg_lvl']."','".$res8[0]['sp_maxlevel']."','".$res9[0]['all_item']."','".$res9[0]['avg_item']."','".$res102[0]['sp_itemcounty']."')","NONE");
|
||||
$DBc->sendSQL("INSERT IGNORE INTO stat_daily (sd_day,sd_players,sd_money_avg,sd_money_total,sd_money_mean,sd_mek_total,sd_mek_avg,sd_mek_mean,sd_yubo_total,sd_yubo_avg,sd_yubo_mean,sd_lvl_total,sd_lvl_avg,sd_lvl_mean,sd_item_total,sd_item_avg,sd_item_mean) VALUES ('".date("Y-m-d",time())."','".$res[0]['playercount']."','".$res[0]['avg_money']."','".$res[0]['all_money']."','".$res2[0]['sp_money']."','".$res5[0]['all_mek']."','".$res5[0]['avg_mek']."','".$res6[0]['sp_mekcount']."','".$res3[0]['all_yubo']."','".$res3[0]['avg_yubo']."','".$res4[0]['sp_yubototal']."','".$res7[0]['all_lvl']."','".$res7[0]['avg_lvl']."','".$res8[0]['sp_maxlevel']."','".$res9[0]['all_item']."','".$res9[0]['avg_item']."','".$res10[0]['sp_itemcount']."')","NONE");
|
||||
}
|
||||
|
||||
$log->logf("done!");
|
||||
#$log->logf("done!");
|
||||
$microstop = explode(' ',microtime());
|
||||
$stop_time = $microstop[0] + $microstop[1];
|
||||
|
||||
$log->logf("Expired time: ".($stop_time - $start_time));
|
||||
#$log->logf("Expired time: ".($stop_time - $start_time));
|
||||
$log->logf("xml-gen took: ".$tmp_log_xmlgen_time);
|
||||
$log->logf("Memory load: ".memory_get_usage()." bytes");
|
||||
#$log->logf("Memory load: ".memory_get_usage()." bytes");
|
||||
|
||||
$log->logi("Writing XML export... ",false);
|
||||
#$log->logi("Writing XML export... ",false);
|
||||
|
||||
$XMLgenerator->generate();
|
||||
|
||||
$log->logf("done!");
|
||||
#$log->logf("done!");
|
||||
|
||||
$log->logf("Memory load: ".memory_get_usage()." bytes");
|
||||
#$log->logf("Memory load: ".memory_get_usage()." bytes");
|
||||
$microstop = explode(' ',microtime());
|
||||
$stop_time = $microstop[0] + $microstop[1];
|
||||
|
||||
$log->logf("Expired time: ".($stop_time - $start_time));
|
||||
#$log->logf("Expired time: ".($stop_time - $start_time));
|
||||
|
||||
for($dtrun=0;$dtrun<2;$dtrun++) {
|
||||
#STEP 3: detect obj/task progression
|
||||
$log->logi("Detecting Objectives... ",false);
|
||||
#$log->logi("Detecting Objectives [PASS ".$dtrun."]... ",false);
|
||||
|
||||
#$log->logf("1... ",false);
|
||||
|
||||
//obj
|
||||
$res = $DBc->sendSQL("SELECT ao_id FROM ach_objective WHERE ao_condition='all' AND NOT EXISTS (SELECT * FROM ach_player_objective WHERE apo_objective=ao_id AND apo_player='".$cdata['cid']."') AND NOT EXISTS (SELECT * FROM ach_atom WHERE atom_objective=ao_id AND NOT EXISTS (SELECT * FROM ach_player_atom WHERE apa_atom=atom_id AND apa_state='GRANT' AND apa_player='".$cdata['cid']."')) AND EXISTS (SELECT * FROM ach_atom WHERE atom_objective=ao_id)","ARRAY");
|
||||
|
@ -196,7 +232,7 @@
|
|||
$DBc->sendSQL("INSERT INTO ach_player_objective (apo_objective,apo_player,apo_date) VALUES ('".$res[$i]['ao_id']."','".$cdata['cid']."','".time()."')","NONE");
|
||||
}
|
||||
|
||||
$log->logf("1... ",false);
|
||||
#$log->logf("2... ",false);
|
||||
|
||||
$res = $DBc->sendSQL("SELECT ao_id FROM ach_objective WHERE ao_condition='value' AND NOT EXISTS (SELECT * FROM ach_player_objective WHERE apo_objective=ao_id AND apo_player='".$cdata['cid']."') AND ao_value<=(SELECT sum(apa_value) FROM ach_atom,ach_player_atom WHERE atom_objective=ao_id AND apa_atom=atom_id AND apa_state='GRANT' AND apa_player='".$cdata['cid']."') AND EXISTS (SELECT * FROM ach_atom WHERE atom_objective=ao_id)","ARRAY");
|
||||
$sz = sizeof($res);
|
||||
|
@ -204,7 +240,7 @@
|
|||
$DBc->sendSQL("INSERT INTO ach_player_objective (apo_objective,apo_player,apo_date) VALUES ('".$res[$i]['ao_id']."','".$cdata['cid']."','".time()."')","NONE");
|
||||
}
|
||||
|
||||
$log->logf("2... ",false);
|
||||
#$log->logf("3... ",false);
|
||||
|
||||
$res = $DBc->sendSQL("SELECT ao_id FROM ach_objective WHERE ao_condition='any' AND NOT EXISTS (SELECT * FROM ach_player_objective WHERE apo_objective=ao_id AND apo_player='".$cdata['cid']."') AND EXISTS (SELECT * FROM ach_atom WHERE atom_objective=ao_id AND EXISTS (SELECT * FROM ach_player_atom WHERE apa_atom=atom_id AND apa_state='GRANT' AND apa_player='".$cdata['cid']."')) AND EXISTS (SELECT * FROM ach_atom WHERE atom_objective=ao_id)","ARRAY");
|
||||
$sz = sizeof($res);
|
||||
|
@ -212,64 +248,63 @@
|
|||
$DBc->sendSQL("INSERT INTO ach_player_objective (apo_objective,apo_player,apo_date) VALUES ('".$res[$i]['ao_id']."','".$cdata['cid']."','".time()."')","NONE");
|
||||
}
|
||||
|
||||
$log->logf("3... ",false);
|
||||
#$log->logf("4... ",false);
|
||||
|
||||
//meta
|
||||
#$res = $DBc->sendSQL("SELECT ao_id FROM ach_objective,ach_task as t1,ach_achievement WHERE ao_display='meta' AND ao_task=t1.at_id AND t1.at_achievement=aa_id AND NOT EXISTS (SELECT * FROM ach_task as t2 WHERE t2.at_achievement=ao_metalink AND NOT EXISTS (SELECT * FROM ach_player_task WHERE apt_task=t2.at_id AND apt_player='".$cdata['cid']."'))","ARRAY");
|
||||
$res = $DBc->sendSQL("SELECT ao_id FROM ach_objective WHERE ao_display='meta' AND NOT EXISTS (SELECT * FROM ach_player_objective WHERE apo_objective=ao_id AND apo_player='".$cdata['cid']."') AND NOT EXISTS (SELECT * FROM ach_task WHERE ao_metalink=at_achievement AND NOT EXISTS (SELECT * FROM ach_player_task WHERE apt_task=at_id AND apt_player='".$cdata['cid']."'))","ARRAY");
|
||||
$res = $DBc->sendSQL("SELECT ao_id FROM ach_objective WHERE ao_display='meta' AND NOT EXISTS (SELECT * FROM ach_player_objective WHERE apo_objective=ao_id AND apo_player='".$cdata['cid']."') AND NOT EXISTS (SELECT * FROM ach_task WHERE ao_metalink=at_achievement AND NOT EXISTS (SELECT * FROM ach_player_task WHERE apt_task=at_id AND apt_player='".$cdata['cid']."') AND (EXISTS (SELECT * FROM ach_task_tie_align WHERE atta_task=at_id AND atta_alignment LIKE '".$cdata['cult'].'|'.$cdata['civ']."') OR NOT EXISTS (SELECT * FROM ach_task_tie_align WHERE atta_task=at_id)))","ARRAY");
|
||||
$sz = sizeof($res);
|
||||
for($i=0;$i<$sz;$i++) {
|
||||
$DBc->sendSQL("INSERT INTO ach_player_objective (apo_objective,apo_player,apo_date) VALUES ('".$res[$i]['ao_id']."','".$cdata['cid']."','".time()."')","NONE");
|
||||
}
|
||||
|
||||
$log->logf("4... ",false);
|
||||
|
||||
$log->logf("done!");
|
||||
#$log->logf("done!");
|
||||
|
||||
$microstop = explode(' ',microtime());
|
||||
$stop_time = $microstop[0] + $microstop[1];
|
||||
|
||||
$log->logf("Expired time: ".($stop_time - $start_time));
|
||||
#$log->logf("Expired time: ".($stop_time - $start_time));
|
||||
|
||||
$log->logi("Clearing atom data... ",false);
|
||||
#$log->logi("Clearing atom data [PASS ".$dtrun."]... ",false);
|
||||
|
||||
//clear atom state for completed objectives
|
||||
#$DBc->sendSQL("DELETE FROM ach_player_atom WHERE EXISTS (SELECT * FROM ach_player_objective,ach_atom WHERE atom_id=apa_atom AND apa_player='".$cdata['cid']."' AND atom_objective=apo_objective)");
|
||||
|
||||
$DBc->sendSQL("DELETE FROM ach_player_atom WHERE apa_player='".$cdata['cid']."' AND EXISTS (SELECT * FROM ach_player_objective,ach_atom WHERE atom_id=apa_atom AND apo_player='".$cdata['cid']."' AND atom_objective=apo_objective)");
|
||||
|
||||
$log->logf("done!");
|
||||
#$log->logf("done!");
|
||||
|
||||
$microstop = explode(' ',microtime());
|
||||
$stop_time = $microstop[0] + $microstop[1];
|
||||
|
||||
$log->logf("Expired time: ".($stop_time - $start_time));
|
||||
#$log->logf("Expired time: ".($stop_time - $start_time));
|
||||
|
||||
//task
|
||||
$log->logi("Detecting Tasks... ",false);
|
||||
$res = $DBc->sendSQL("SELECT at_id FROM ach_task WHERE at_condition='all' AND NOT EXISTS (SELECT * FROM ach_player_task WHERE apt_task=at_id AND apt_player='".$cdata['cid']."') AND NOT EXISTS (SELECT * FROM ach_objective WHERE ao_task=at_id AND NOT EXISTS (SELECT * FROM ach_player_objective WHERE apo_objective=ao_id AND apo_player='".$cdata['cid']."')) AND EXISTS (SELECT * FROM ach_objective WHERE ao_task=at_id) AND at_dev='0'","ARRAY");
|
||||
#$log->logi("Detecting Tasks [PASS ".$dtrun."]... ",false);
|
||||
|
||||
#$log->logf("1... ",false);
|
||||
$res = $DBc->sendSQL("SELECT at_id FROM ach_task WHERE at_condition='all' AND NOT EXISTS (SELECT * FROM ach_player_task WHERE apt_task=at_id AND apt_player='".$cdata['cid']."') AND NOT EXISTS (SELECT * FROM ach_objective WHERE ao_task=at_id AND NOT EXISTS (SELECT * FROM ach_player_objective WHERE apo_objective=ao_id AND apo_player='".$cdata['cid']."')) AND EXISTS (SELECT * FROM ach_objective WHERE ao_task=at_id) AND at_dev='0' AND (NOT EXISTS (SELECT * FROM ach_task_tie_align WHERE atta_task=at_id) OR EXISTS (SELECT * FROM ach_task_tie_align WHERE atta_task=at_id AND atta_alignment LIKE '".$cdata['cult'].'|'.$cdata['civ']."'))","ARRAY");
|
||||
$sz = sizeof($res);
|
||||
for($i=0;$i<$sz;$i++) {
|
||||
$DBc->sendSQL("INSERT INTO ach_player_task (apt_task,apt_player,apt_date) VALUES ('".$res[$i]['at_id']."','".$cdata['cid']."','".time()."')","NONE");
|
||||
}
|
||||
|
||||
$log->logf("1... ",false);
|
||||
#$log->logf("2... ",false);
|
||||
|
||||
$res = $DBc->sendSQL("SELECT at_id FROM ach_task WHERE at_condition='value' AND NOT EXISTS (SELECT * FROM ach_player_task WHERE apt_task=at_id AND apt_player='".$cdata['cid']."') AND at_value<=(SELECT count(*) FROM ach_objective WHERE ao_task=at_id AND EXISTS (SELECT * FROM ach_player_objective WHERE apo_objective=ao_id AND apo_player='".$cdata['cid']."')) AND EXISTS (SELECT * FROM ach_objective WHERE ao_task=at_id) AND at_dev='0'","ARRAY");
|
||||
$res = $DBc->sendSQL("SELECT at_id FROM ach_task WHERE at_condition='value' AND NOT EXISTS (SELECT * FROM ach_player_task WHERE apt_task=at_id AND apt_player='".$cdata['cid']."') AND at_value<=(SELECT count(*) FROM ach_objective WHERE ao_task=at_id AND EXISTS (SELECT * FROM ach_player_objective WHERE apo_objective=ao_id AND apo_player='".$cdata['cid']."')) AND EXISTS (SELECT * FROM ach_objective WHERE ao_task=at_id) AND at_dev='0' AND (NOT EXISTS (SELECT * FROM ach_task_tie_align WHERE atta_task=at_id) OR EXISTS (SELECT * FROM ach_task_tie_align WHERE atta_task=at_id AND atta_alignment LIKE '".$cdata['cult'].'|'.$cdata['civ']."'))","ARRAY");
|
||||
$sz = sizeof($res);
|
||||
for($i=0;$i<$sz;$i++) {
|
||||
$DBc->sendSQL("INSERT INTO ach_player_task (apt_task,apt_player,apt_date) VALUES ('".$res[$i]['at_id']."','".$cdata['cid']."','".time()."')","NONE");
|
||||
}
|
||||
|
||||
$log->logf("2... ",false);
|
||||
#$log->logf("3... ",false);
|
||||
|
||||
$res = $DBc->sendSQL("SELECT at_id FROM ach_task WHERE at_condition='any' AND NOT EXISTS (SELECT * FROM ach_player_task WHERE apt_task=at_id AND apt_player='".$cdata['cid']."') AND EXISTS (SELECT * FROM ach_objective WHERE ao_task=at_id AND EXISTS (SELECT * FROM ach_player_objective WHERE apo_objective=ao_id AND apo_player='".$cdata['cid']."')) AND EXISTS (SELECT * FROM ach_objective WHERE ao_task=at_id) AND at_dev='0'","ARRAY");
|
||||
$res = $DBc->sendSQL("SELECT at_id FROM ach_task WHERE at_condition='any' AND NOT EXISTS (SELECT * FROM ach_player_task WHERE apt_task=at_id AND apt_player='".$cdata['cid']."') AND EXISTS (SELECT * FROM ach_objective WHERE ao_task=at_id AND EXISTS (SELECT * FROM ach_player_objective WHERE apo_objective=ao_id AND apo_player='".$cdata['cid']."')) AND EXISTS (SELECT * FROM ach_objective WHERE ao_task=at_id) AND at_dev='0' AND (NOT EXISTS (SELECT * FROM ach_task_tie_align WHERE atta_task=at_id) OR EXISTS (SELECT * FROM ach_task_tie_align WHERE atta_task=at_id AND atta_alignment LIKE '".$cdata['cult'].'|'.$cdata['civ']."'))","ARRAY");
|
||||
$sz = sizeof($res);
|
||||
for($i=0;$i<$sz;$i++) {
|
||||
$DBc->sendSQL("INSERT INTO ach_player_task (apt_task,apt_player,apt_date) VALUES ('".$res[$i]['at_id']."','".$cdata['cid']."','".time()."')","NONE");
|
||||
}
|
||||
|
||||
$log->logf("3... ",false);
|
||||
|
||||
/*if($CONF['facebook'] == true) {
|
||||
require_once("../fb/facebook.php");
|
||||
|
@ -305,15 +340,25 @@ $log->logf("3... ",false);
|
|||
}
|
||||
}*/
|
||||
|
||||
$log->logf("done!");
|
||||
#}
|
||||
#$log->logf("done!");
|
||||
$microstop = explode(' ',microtime());
|
||||
$stop_time = $microstop[0] + $microstop[1];
|
||||
|
||||
#$log->logf("Expired time: ".($stop_time - $start_time));
|
||||
}
|
||||
//clear objective data for completed tasks
|
||||
$DBc->sendSQL("DELETE FROM ach_player_objective WHERE apo_player='".$cdata['cid']."' AND EXISTS (SELECT * FROM ach_player_task,ach_objective WHERE ao_task=apt_task AND apt_player='".$cdata['cid']."' AND ao_id=apo_objective)");
|
||||
|
||||
$microstop = explode(' ',microtime());
|
||||
$stop_time = $microstop[0] + $microstop[1];
|
||||
|
||||
$log->logf("Total time: ".($stop_time - $start_time));
|
||||
$log->logf("SQL time: ".$DBc->sqltime." / ".$DBc->sqltime_post." / ".$DBc->DBstats['query']);
|
||||
if(sizeof($DBc->longQuery) > 0) {
|
||||
$log->logf("Longer queries: ".var_export($DBc->longQuery,true));
|
||||
}
|
||||
|
||||
$log->logf("Run complete; exiting...");
|
||||
#$log->logf("Run complete; exiting...");
|
||||
$log->close();
|
||||
exit(0);
|
||||
?>
|
24133
code/web/api/server/scripts/achievement_script/_test/char_346.xml
Normal file
|
@ -0,0 +1,386 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
|
||||
class.Diff.php
|
||||
|
||||
A class containing a diff implementation
|
||||
|
||||
Created by Stephen Morley - http://stephenmorley.org/ - and released under the
|
||||
terms of the CC0 1.0 Universal legal code:
|
||||
|
||||
http://creativecommons.org/publicdomain/zero/1.0/legalcode
|
||||
|
||||
*/
|
||||
|
||||
// A class containing functions for computing diffs and formatting the output.
|
||||
class Diff{
|
||||
|
||||
// define the constants
|
||||
const UNMODIFIED = 0;
|
||||
const DELETED = 1;
|
||||
const INSERTED = 2;
|
||||
|
||||
/* Returns the diff for two strings. The return value is an array, each of
|
||||
* whose values is an array containing two values: a line (or character, if
|
||||
* $compareCharacters is true), and one of the constants DIFF::UNMODIFIED (the
|
||||
* line or character is in both strings), DIFF::DELETED (the line or character
|
||||
* is only in the first string), and DIFF::INSERTED (the line or character is
|
||||
* only in the second string). The parameters are:
|
||||
*
|
||||
* $string1 - the first string
|
||||
* $string2 - the second string
|
||||
* $compareCharacters - true to compare characters, and false to compare
|
||||
* lines; this optional parameter defaults to false
|
||||
*/
|
||||
public static function compare(
|
||||
$string1, $string2, $compareCharacters = false){
|
||||
|
||||
// initialise the sequences and comparison start and end positions
|
||||
$start = 0;
|
||||
if ($compareCharacters){
|
||||
$sequence1 = $string1;
|
||||
$sequence2 = $string2;
|
||||
$end1 = strlen($string1) - 1;
|
||||
$end2 = strlen($string2) - 1;
|
||||
}else{
|
||||
$sequence1 = preg_split('/\R/', $string1);
|
||||
$sequence2 = preg_split('/\R/', $string2);
|
||||
$end1 = count($sequence1) - 1;
|
||||
$end2 = count($sequence2) - 1;
|
||||
}
|
||||
|
||||
// skip any common prefix
|
||||
while ($start <= $end1 && $start <= $end2
|
||||
&& $sequence1[$start] == $sequence2[$start]){
|
||||
$start ++;
|
||||
}
|
||||
|
||||
// skip any common suffix
|
||||
while ($end1 >= $start && $end2 >= $start
|
||||
&& $sequence1[$end1] == $sequence2[$end2]){
|
||||
$end1 --;
|
||||
$end2 --;
|
||||
}
|
||||
|
||||
// compute the table of longest common subsequence lengths
|
||||
$table = self::computeTable($sequence1, $sequence2, $start, $end1, $end2);
|
||||
|
||||
// generate the partial diff
|
||||
$partialDiff =
|
||||
self::generatePartialDiff($table, $sequence1, $sequence2, $start);
|
||||
|
||||
// generate the full diff
|
||||
$diff = array();
|
||||
for ($index = 0; $index < $start; $index ++){
|
||||
$diff[] = array($sequence1[$index], self::UNMODIFIED);
|
||||
}
|
||||
while (count($partialDiff) > 0) $diff[] = array_pop($partialDiff);
|
||||
for ($index = $end1 + 1;
|
||||
$index < ($compareCharacters ? strlen($sequence1) : count($sequence1));
|
||||
$index ++){
|
||||
$diff[] = array($sequence1[$index], self::UNMODIFIED);
|
||||
}
|
||||
|
||||
// return the diff
|
||||
return $diff;
|
||||
|
||||
}
|
||||
|
||||
/* Returns the diff for two files. The parameters are:
|
||||
*
|
||||
* $file1 - the path to the first file
|
||||
* $file2 - the path to the second file
|
||||
* $compareCharacters - true to compare characters, and false to compare
|
||||
* lines; this optional parameter defaults to false
|
||||
*/
|
||||
public static function compareFiles(
|
||||
$file1, $file2, $compareCharacters = false){
|
||||
|
||||
// return the diff of the files
|
||||
return self::compare(
|
||||
file_get_contents($file1),
|
||||
file_get_contents($file2),
|
||||
$compareCharacters);
|
||||
|
||||
}
|
||||
|
||||
/* Returns the table of longest common subsequence lengths for the specified
|
||||
* sequences. The parameters are:
|
||||
*
|
||||
* $sequence1 - the first sequence
|
||||
* $sequence2 - the second sequence
|
||||
* $start - the starting index
|
||||
* $end1 - the ending index for the first sequence
|
||||
* $end2 - the ending index for the second sequence
|
||||
*/
|
||||
private static function computeTable(
|
||||
$sequence1, $sequence2, $start, $end1, $end2){
|
||||
|
||||
// determine the lengths to be compared
|
||||
$length1 = $end1 - $start + 1;
|
||||
$length2 = $end2 - $start + 1;
|
||||
|
||||
// initialise the table
|
||||
$table = array(array_fill(0, $length2 + 1, 0));
|
||||
|
||||
// loop over the rows
|
||||
for ($index1 = 1; $index1 <= $length1; $index1 ++){
|
||||
|
||||
// create the new row
|
||||
$table[$index1] = array(0);
|
||||
|
||||
// loop over the columns
|
||||
for ($index2 = 1; $index2 <= $length2; $index2 ++){
|
||||
|
||||
// store the longest common subsequence length
|
||||
if ($sequence1[$index1 + $start - 1]
|
||||
== $sequence2[$index2 + $start - 1]){
|
||||
$table[$index1][$index2] = $table[$index1 - 1][$index2 - 1] + 1;
|
||||
}else{
|
||||
$table[$index1][$index2] =
|
||||
max($table[$index1 - 1][$index2], $table[$index1][$index2 - 1]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// return the table
|
||||
return $table;
|
||||
|
||||
}
|
||||
|
||||
/* Returns the partial diff for the specificed sequences, in reverse order.
|
||||
* The parameters are:
|
||||
*
|
||||
* $table - the table returned by the computeTable function
|
||||
* $sequence1 - the first sequence
|
||||
* $sequence2 - the second sequence
|
||||
* $start - the starting index
|
||||
*/
|
||||
private static function generatePartialDiff(
|
||||
$table, $sequence1, $sequence2, $start){
|
||||
|
||||
// initialise the diff
|
||||
$diff = array();
|
||||
|
||||
// initialise the indices
|
||||
$index1 = count($table) - 1;
|
||||
$index2 = count($table[0]) - 1;
|
||||
|
||||
// loop until there are no items remaining in either sequence
|
||||
while ($index1 > 0 || $index2 > 0){
|
||||
|
||||
// check what has happened to the items at these indices
|
||||
if ($index1 > 0 && $index2 > 0
|
||||
&& $sequence1[$index1 + $start - 1]
|
||||
== $sequence2[$index2 + $start - 1]){
|
||||
|
||||
// update the diff and the indices
|
||||
$diff[] = array($sequence1[$index1 + $start - 1], self::UNMODIFIED);
|
||||
$index1 --;
|
||||
$index2 --;
|
||||
|
||||
}elseif ($index2 > 0
|
||||
&& $table[$index1][$index2] == $table[$index1][$index2 - 1]){
|
||||
|
||||
// update the diff and the indices
|
||||
$diff[] = array($sequence2[$index2 + $start - 1], self::INSERTED);
|
||||
$index2 --;
|
||||
|
||||
}else{
|
||||
|
||||
// update the diff and the indices
|
||||
$diff[] = array($sequence1[$index1 + $start - 1], self::DELETED);
|
||||
$index1 --;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// return the diff
|
||||
return $diff;
|
||||
|
||||
}
|
||||
|
||||
/* Returns a diff as a string, where unmodified lines are prefixed by ' ',
|
||||
* deletions are prefixed by '- ', and insertions are prefixed by '+ '. The
|
||||
* parameters are:
|
||||
*
|
||||
* $diff - the diff array
|
||||
* $separator - the separator between lines; this optional parameter defaults
|
||||
* to "\n"
|
||||
*/
|
||||
public static function toString($diff, $separator = "\n"){
|
||||
|
||||
// initialise the string
|
||||
$string = '';
|
||||
|
||||
// loop over the lines in the diff
|
||||
foreach ($diff as $line){
|
||||
|
||||
// extend the string with the line
|
||||
switch ($line[1]){
|
||||
#case self::UNMODIFIED : $string .= ' ' . $line[0];break;
|
||||
#case self::DELETED : $string .= '- ' . $line[0];break;
|
||||
case self::INSERTED : $string .= '' . $line[0];break;
|
||||
}
|
||||
|
||||
// extend the string with the separator
|
||||
$string .= $separator;
|
||||
|
||||
}
|
||||
|
||||
// return the string
|
||||
return $string;
|
||||
|
||||
}
|
||||
|
||||
/* Returns a diff as an HTML string, where unmodified lines are contained
|
||||
* within 'span' elements, deletions are contained within 'del' elements, and
|
||||
* insertions are contained within 'ins' elements. The parameters are:
|
||||
*
|
||||
* $diff - the diff array
|
||||
* $separator - the separator between lines; this optional parameter defaults
|
||||
* to '<br>'
|
||||
*/
|
||||
public static function toHTML($diff, $separator = '<br>'){
|
||||
|
||||
// initialise the HTML
|
||||
$html = '';
|
||||
|
||||
// loop over the lines in the diff
|
||||
foreach ($diff as $line){
|
||||
|
||||
// extend the HTML with the line
|
||||
switch ($line[1]){
|
||||
case self::UNMODIFIED : $element = 'span'; break;
|
||||
case self::DELETED : $element = 'del'; break;
|
||||
case self::INSERTED : $element = 'ins'; break;
|
||||
}
|
||||
$html .=
|
||||
'<' . $element . '>'
|
||||
. htmlspecialchars($line[0])
|
||||
. '</' . $element . '>';
|
||||
|
||||
// extend the HTML with the separator
|
||||
$html .= $separator;
|
||||
|
||||
}
|
||||
|
||||
// return the HTML
|
||||
return $html;
|
||||
|
||||
}
|
||||
|
||||
/* Returns a diff as an HTML table. The parameters are:
|
||||
*
|
||||
* $diff - the diff array
|
||||
* $indentation - indentation to add to every line of the generated HTML; this
|
||||
* optional parameter defaults to ''
|
||||
* $separator - the separator between lines; this optional parameter
|
||||
* defaults to '<br>'
|
||||
*/
|
||||
public static function toTable($diff, $indentation = '', $separator = '<br>'){
|
||||
|
||||
// initialise the HTML
|
||||
$html = $indentation . "<table class=\"diff\">\n";
|
||||
|
||||
// loop over the lines in the diff
|
||||
$index = 0;
|
||||
while ($index < count($diff)){
|
||||
|
||||
// determine the line type
|
||||
switch ($diff[$index][1]){
|
||||
|
||||
// display the content on the left and right
|
||||
case self::UNMODIFIED:
|
||||
$leftCell =
|
||||
self::getCellContent(
|
||||
$diff, $indentation, $separator, $index, self::UNMODIFIED);
|
||||
$rightCell = $leftCell;
|
||||
break;
|
||||
|
||||
// display the deleted on the left and inserted content on the right
|
||||
case self::DELETED:
|
||||
$leftCell =
|
||||
self::getCellContent(
|
||||
$diff, $indentation, $separator, $index, self::DELETED);
|
||||
$rightCell =
|
||||
self::getCellContent(
|
||||
$diff, $indentation, $separator, $index, self::INSERTED);
|
||||
break;
|
||||
|
||||
// display the inserted content on the right
|
||||
case self::INSERTED:
|
||||
$leftCell = '';
|
||||
$rightCell =
|
||||
self::getCellContent(
|
||||
$diff, $indentation, $separator, $index, self::INSERTED);
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
// extend the HTML with the new row
|
||||
$html .=
|
||||
$indentation
|
||||
. " <tr>\n"
|
||||
. $indentation
|
||||
. ' <td class="diff'
|
||||
. ($leftCell == $rightCell
|
||||
? 'Unmodified'
|
||||
: ($leftCell == '' ? 'Blank' : 'Deleted'))
|
||||
. '">'
|
||||
. $leftCell
|
||||
. "</td>\n"
|
||||
. $indentation
|
||||
. ' <td class="diff'
|
||||
. ($leftCell == $rightCell
|
||||
? 'Unmodified'
|
||||
: ($rightCell == '' ? 'Blank' : 'Inserted'))
|
||||
. '">'
|
||||
. $rightCell
|
||||
. "</td>\n"
|
||||
. $indentation
|
||||
. " </tr>\n";
|
||||
|
||||
}
|
||||
|
||||
// return the HTML
|
||||
return $html . $indentation . "</table>\n";
|
||||
|
||||
}
|
||||
|
||||
/* Returns the content of the cell, for use in the toTable function. The
|
||||
* parameters are:
|
||||
*
|
||||
* $diff - the diff array
|
||||
* $indentation - indentation to add to every line of the generated HTML
|
||||
* $separator - the separator between lines
|
||||
* $index - the current index, passes by reference
|
||||
* $type - the type of line
|
||||
*/
|
||||
private static function getCellContent(
|
||||
$diff, $indentation, $separator, &$index, $type){
|
||||
|
||||
// initialise the HTML
|
||||
$html = '';
|
||||
|
||||
// loop over the matching lines, adding them to the HTML
|
||||
while ($index < count($diff) && $diff[$index][1] == $type){
|
||||
$html .=
|
||||
'<span>'
|
||||
. htmlspecialchars($diff[$index][0])
|
||||
. '</span>'
|
||||
. $separator;
|
||||
$index ++;
|
||||
}
|
||||
|
||||
// return the HTML
|
||||
return $html;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
require_once("diff_class.php");
|
||||
|
||||
$microstart = explode(' ',microtime());
|
||||
$start_time = $microstart[0] + $microstart[1];
|
||||
|
||||
echo Diff::toString(Diff::compareFiles('old_char_346.xml', 'char_346.xml', false));
|
||||
|
||||
$microstop = explode(' ',microtime());
|
||||
$stop_time = $microstop[0] + $microstop[1];
|
||||
|
||||
echo "Expired time: ".($stop_time - $start_time)."<br>";
|
||||
|
||||
echo "Memory load: ".memory_get_usage()." bytes";
|
||||
?>
|
24133
code/web/api/server/scripts/achievement_script/_test/old_char_346.xml
Normal file
|
@ -59,9 +59,11 @@
|
|||
}
|
||||
|
||||
function grant($count = 1) { // grant an atom
|
||||
global $DBc;
|
||||
global $DBc,$atom_insert;
|
||||
|
||||
$DBc->sendSQL("INSERT INTO ach_player_atom (apa_atom,apa_player,apa_date,apa_expire,apa_state,apa_value) VALUES ('".$this->id."','".$this->user['cid']."','".time()."',null,'GRANT','".$count."')","NONE");
|
||||
#$DBc->sendSQL("INSERT INTO ach_player_atom (apa_atom,apa_player,apa_date,apa_expire,apa_state,apa_value) VALUES ('".$this->id."','".$this->user['cid']."','".time()."',null,'GRANT','".$count."')","NONE");
|
||||
|
||||
$atom_insert[] = "('".$this->id."','".$this->user['cid']."','".time()."',null,'GRANT','".$count."')";
|
||||
}
|
||||
|
||||
function deny() { // deny an atom
|
||||
|
@ -73,6 +75,8 @@
|
|||
function reset_() { // reset progress for this atom
|
||||
global $DBc;
|
||||
|
||||
#$res = $DBc->sendSQL("SELECT * FROM ach_player_atom WHERE apa_atom='".$this->id."' AND apa_player='".$this->user['cid']."'","ARRAY");
|
||||
|
||||
$DBc->sendSQL("DELETE FROM ach_player_atom WHERE apa_atom='".$this->id."' AND apa_player='".$this->user['cid']."'","NONE");
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
/*
|
||||
* Logging, logging, logging....
|
||||
*/
|
||||
|
||||
class Logfile {
|
||||
private $logfile;
|
||||
|
||||
function Logfile($f = false,$logto = "std") {
|
||||
global $CONF,$MY_PATH;
|
||||
$this->logfile = false;
|
||||
|
||||
if($f != false) {
|
||||
|
||||
|
||||
$ldir = $MY_PATH.$CONF['logfile'].date("Y-m-d",time());
|
||||
|
||||
#$tmp = fopen($MY_PATH."/testlog.txt",'a+');
|
||||
#fwrite($tmp, $ldir.'/'.date("H",time()).".txt\n");
|
||||
#fclose($tmp);
|
||||
|
||||
if(!is_dir($ldir)) {
|
||||
mkdir($ldir,0777,true);
|
||||
}
|
||||
$this->logfile = fopen($ldir.'/'.date("H",time()).'_'.$logto.'.txt','a+');
|
||||
#echo "kk";
|
||||
}
|
||||
}
|
||||
|
||||
function logf($t,$nl = true) {
|
||||
$this->write("[".date("H:i:s")."] ".$t);
|
||||
if($nl == true) {
|
||||
$this->write("\n");
|
||||
}
|
||||
}
|
||||
|
||||
function logi($t,$nl = true) {
|
||||
#echo $t;
|
||||
$this->write("[".date("H:i:s")."] > ".$t);
|
||||
if($nl == true) {
|
||||
$this->write("\n");
|
||||
}
|
||||
}
|
||||
|
||||
function write($txt) {
|
||||
#echo $txt;
|
||||
if($this->logfile != false) {
|
||||
fwrite($this->logfile,$txt);
|
||||
}
|
||||
}
|
||||
|
||||
function close() {
|
||||
if($this->logfile != false) {
|
||||
fclose($this->logfile);
|
||||
}
|
||||
#echo "ii";
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -1,9 +1,27 @@
|
|||
<?php
|
||||
class Stats {
|
||||
#private $user;
|
||||
private $data;
|
||||
|
||||
function Stats() {
|
||||
global $cdata,$DBc;
|
||||
#$this->user = $user;
|
||||
|
||||
$DBc->sendSQL("INSERT IGNORE INTO stat_players (sp_char) VALUES ('".$cdata['cid']."')","NONE");
|
||||
|
||||
$this->data = array();
|
||||
}
|
||||
|
||||
function setValue($k,$v) {
|
||||
global $DBc;
|
||||
|
||||
$this->data[] = $k."='".$DBc->mre($v)."'";
|
||||
}
|
||||
|
||||
function writeData() {
|
||||
global $DBc,$cdata;
|
||||
|
||||
$DBc->sendSQL("UPDATE stat_players SET ".implode(',',$this->data)." WHERE sp_char='".$cdata['cid']."'","NONE");
|
||||
}
|
||||
|
||||
function register() { // register the stats code
|
|
@ -17,7 +17,15 @@
|
|||
function writeData($key,$val) { // write to cache
|
||||
global $DBc;
|
||||
|
||||
$DBc->sendSQL("INSERT INTO ach_player_valuecache (apv_name,apv_player,apv_value,apv_date) VALUES ('".$DBc->mre($key)."','".$this->char."','".$DBc->mre($val)."','".time()."') ON DUPLICATE KEY UPDATE apv_value='".$DBc->mre($val)."', apv_date='".time()."'","NONE");
|
||||
$res = $DBc->sendSQL("SELECT count(*) as anz FROM ach_player_valuecache WHERE apv_name='".$DBc->mre($key)."' AND apv_player='".$this->char."'","ARRAY");
|
||||
|
||||
if($res[0]['anz'] == 0) {
|
||||
|
||||
$DBc->sendSQL("INSERT DELAYED INTO ach_player_valuecache (apv_name,apv_player,apv_value,apv_date) VALUES ('".$DBc->mre($key)."','".$this->char."','".$DBc->mre($val)."','".time()."')","NONE");
|
||||
}
|
||||
else {
|
||||
$DBc->sendSQL("UPDATE ach_player_valuecache SET apv_value='".$DBc->mre($val)."', apv_date='".time()."' WHERE apv_name='".$DBc->mre($key)."' AND apv_player='".$this->char."'","NONE");
|
||||
}
|
||||
}
|
||||
|
||||
function getData($key) { // read from cache
|
|
@ -82,24 +82,30 @@
|
|||
$xml .= "<xml>\n";
|
||||
$xml .= " <cached>".time()."</cached>\n";
|
||||
$xml .= " <uniqueid>".$cdata['cid']."</uniqueid>\n";
|
||||
$xml .= " <accountid>".$cdata['aid']."</accountid>\n";
|
||||
$xml .= " <charslotid>".$cdata['sid']."</charslotid>\n";
|
||||
#$xml .= " <accountid>".$cdata['aid']."</accountid>\n";
|
||||
#$xml .= " <charslotid>".$cdata['sid']."</charslotid>\n";
|
||||
|
||||
$xml .= $elem->generate(' ');
|
||||
|
||||
$xml .= "</xml>";
|
||||
|
||||
$cid = ($cdata['aid']*16+$cdata['sid']);
|
||||
|
||||
|
||||
//store
|
||||
$pth = $CONF['export_xml_path'].$elem->getIdent()."/".($cdata['cid']%10);
|
||||
$pth = $CONF['export_xml_path'].$elem->getIdent()."/".($cid%10);
|
||||
|
||||
if(!is_dir($pth)) {
|
||||
mkdir($pth,0777,true);
|
||||
}
|
||||
|
||||
$f = fopen($pth."/".$cdata['cid'].".xml","w");
|
||||
$f = fopen($pth."/".$cid.".xml","w");
|
||||
fwrite($f,$xml);
|
||||
fclose($f);
|
||||
|
||||
$old = umask();
|
||||
chmod($pth."/".$cid.".xml", 0777);
|
||||
umask($old);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -7,8 +7,13 @@
|
|||
private $parent = null;
|
||||
|
||||
function XMLNode($n = null,$v = null,$p = null) {
|
||||
$this->name = $n;
|
||||
$this->value = $v;
|
||||
if(is_numeric($n)) {
|
||||
$this->name = "_".$n;
|
||||
}
|
||||
else {
|
||||
$this->name = $n;
|
||||
}
|
||||
$this->value = htmlspecialchars($v);
|
||||
$this->parent = $p;
|
||||
}
|
||||
|
||||
|
@ -21,11 +26,16 @@
|
|||
}
|
||||
|
||||
function setName($n) {
|
||||
$this->name = $n;
|
||||
if(is_numeric($n)) {
|
||||
$this->name = "_".$n;
|
||||
}
|
||||
else {
|
||||
$this->name = $n;
|
||||
}
|
||||
}
|
||||
|
||||
function setValue($v) {
|
||||
$this->value = $v;
|
||||
$this->value = htmlspecialchars($v);
|
||||
}
|
||||
|
||||
function addArg($k,$v) {
|
|
@ -6,6 +6,9 @@
|
|||
var $DBc;
|
||||
var $DBstats;
|
||||
var $cached;
|
||||
var $sqltime;
|
||||
var $sqltime_post;
|
||||
var $longQuery;
|
||||
|
||||
function mre($in) { // shorter than "mysql_real_escape_string"
|
||||
if(is_array($in)) {
|
||||
|
@ -31,6 +34,9 @@
|
|||
}
|
||||
$this->resetStats(); // reset stats counter
|
||||
$this->cached = false;
|
||||
$this->sqltime = 0;
|
||||
$this->sqltime_post = 0;
|
||||
$this->longQuery = array();
|
||||
}
|
||||
|
||||
function connect($ip,$user,$pass,$db=false) { // connect
|
||||
|
@ -62,6 +68,9 @@
|
|||
return false;
|
||||
}
|
||||
|
||||
$microstart = explode(' ',microtime());
|
||||
$start_time = $microstart[0] + $microstart[1];
|
||||
|
||||
if($buffer === false && $handling !== "PLAIN") {
|
||||
$res = mysql_unbuffered_query($query,$this->DBc) or $this->error(mysql_error(),$query);
|
||||
}
|
||||
|
@ -71,6 +80,15 @@
|
|||
|
||||
$this->DBstats['query']++;
|
||||
|
||||
$microstop = explode(' ',microtime());
|
||||
$stop_time = $microstop[0] + $microstop[1];
|
||||
|
||||
if(($stop_time - $start_time) > 0.5) {
|
||||
$this->longQuery[] = array(($stop_time - $start_time),$query);
|
||||
}
|
||||
|
||||
$this->sqltime += ($stop_time - $start_time);
|
||||
|
||||
if($res) {
|
||||
if($handling === "INSERT") {
|
||||
$tmp = mysql_insert_id($this->DBc) or $this->error(mysql_error());;
|
||||
|
@ -83,7 +101,16 @@
|
|||
return $tmp;
|
||||
}
|
||||
elseif($handling === "ARRAY") {
|
||||
$microstart = explode(' ',microtime());
|
||||
$start_time = $microstart[0] + $microstart[1];
|
||||
|
||||
$tmp = $this->parseSql($res);
|
||||
|
||||
$microstop = explode(' ',microtime());
|
||||
$stop_time = $microstop[0] + $microstop[1];
|
||||
|
||||
$this->sqltime_post += ($stop_time - $start_time);
|
||||
|
||||
$this->unlinkSql($res);
|
||||
return $tmp;
|
||||
}
|
|
@ -7,7 +7,7 @@
|
|||
$CONF = array();
|
||||
|
||||
$CONF['logging'] = true;
|
||||
$CONF['logfile'] = "/log/AchWebParser.log";
|
||||
$CONF['logfile'] = "/log/";
|
||||
|
||||
$CONF['mysql_error'] = "LOG";
|
||||
$CONF['mysql_server'] = RYAPI_WEBDB_HOST;
|
||||
|
@ -15,13 +15,15 @@
|
|||
$CONF['mysql_pass'] = RYAPI_WEBDB_PASS;
|
||||
$CONF['mysql_database'] = "app_achievements";
|
||||
|
||||
#$CONF['char_mysql_server'] = RYAPI_NELDB_HOST;
|
||||
#$CONF['char_mysql_user'] = RYAPI_NELDB_LOGIN;
|
||||
#$CONF['char_mysql_pass'] = RYAPI_NELDB_PASS;
|
||||
$CONF['char_mysql_database'] = "webig";
|
||||
$CONF['webig_mysql_database'] = "webig";
|
||||
|
||||
$CONF['export_xml_path'] = RYAPI_PATH."data/cache/players/";
|
||||
#$CONF['export_xml_path'] = "testxml/";
|
||||
$CONF['char_mysql_server'] = RYAPI_NELDB_HOST;
|
||||
$CONF['char_mysql_user'] = RYAPI_NELDB_LOGIN;
|
||||
$CONF['char_mysql_pass'] = RYAPI_NELDB_PASS;
|
||||
$CONF['char_mysql_database'] = RYAPI_NELDB_RING;
|
||||
|
||||
$CONF['export_xml_path'] = "../../../data/cache/players/";
|
||||
#$CONF['export_xml_path'] = "cache/players/";
|
||||
|
||||
$CONF['data_source'] = array("PDRtoXMLdriver");
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh -
|
||||
|
||||
cd /home/api/public_html/server/scripts/achievement_script
|
||||
|
||||
sudo -u api nohup ./parse_new_xml.sh &
|
|
@ -0,0 +1,22 @@
|
|||
#!/bin/sh
|
||||
|
||||
cd /home/api/public_html/server/scripts/achievement_script
|
||||
|
||||
SRC=/home/api/public_html/server/scripts/achievement_script/new_xml
|
||||
DST=/home/api/public_html/server/scripts/achievement_script/parse_xml
|
||||
|
||||
while true; do
|
||||
|
||||
FN=`inotifywait -r -e close_write --format '%w%f' $SRC`
|
||||
|
||||
for f in $SRC/*; do
|
||||
NAME="$DST/"`basename $f`
|
||||
mv -f $f $DST
|
||||
echo "Processing $NAME"
|
||||
php AchWebParser.php $NAME
|
||||
rm -f $NAME
|
||||
done
|
||||
|
||||
done
|
||||
|
||||
#cd -
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
$region = array();
|
||||
|
||||
$region['aeden'] = array("13780 -31556 ","13780 -33532 ","14364 -34876 ","19636 -34860 ","19996 -30660 ","19988 -29724 ","18676 -29452 ","14372 -29444 ","13780 -31556"); // Aeden Aqueous
|
||||
|
||||
$region['desert'] = array("15848 -23868 ","15944 -26572 ","17208 -27026 ","20280 -27020 ","20296 -26364 ","20312 -23868 ","18832 -23840 ","15848 -23868"); // Burning Desert
|
||||
|
||||
$region['verdant'] = array("3432 -4828 ","2920 -6076 ","2904 -7644 ","6048 -7836 ","6232 -6276 ","6176 -5436 ","5256 -3532 ","6240 -804 ","-249456 -348 ","3944 -340 ","376 -324 ","-254400 -1068 ","616 -2668 ","2744 -3100 ","3432 -4828"); // Verdant Heights
|
||||
|
||||
$region['witherings'] = array("6924 -968 ","6892 -2096 ","7028 -4632 ","8180 -4120 ","9628 -5176 ","12084 -5904 ","12420 -5552 ","12300 -2784 ","12460 -1464 ","11444 -984 ","9516 -1400 ","8220 -976 ","6924 -968"); // The Witherings
|
||||
|
||||
$region['nexus'] = array("7852 -6836 ","7860 -7156 ","8604 -8292 ","9140 -8300 ","2712 -6788 ","9724 -6564 ","9556 -6108 ","9012 -6116 ","7852 -6836"); // Nexus
|
||||
|
||||
$region['ichor'] = array("536 -10336 ","488 -11168 ","680 -11320 ","1592 -11320 ","2080 -3708 ","696 -9792 ","536 -10336"); // Abyss of Ichor
|
||||
|
||||
$region['spring'] = array("3484 -9776 ","2572 -10224 ","2620 -11008 ","3260 -11344 ","3804 -10912 ","3836 -10240 ","3484 -9776"); // Under Spring
|
||||
|
||||
$region['wastelands'] = array("204 -14072 ","748 -15336 ","2140 -15816 ","2988 -15704 ","2956 -13144 ","732 -13128 ","172 -13736 ","204 -14072"); // Wastelands
|
||||
|
||||
$region['umbra'] = array("5456 -9788 ","5440 -16936 ","7200 -16952 ","7344 -12472 ","6304 -9624 ","5456 -9788"); // Lands of Umbra
|
||||
|
||||
?>
|
|
@ -0,0 +1,89 @@
|
|||
<?php
|
||||
$this->registerValue("_money","_statsdb_money");
|
||||
function _statsdb_money($money,$_P,$_CB) {
|
||||
global $cdata,$DBc,$statsdb;
|
||||
$_IDENT = "_money";
|
||||
|
||||
#$DBc->sendSQL("UPDATE stat_players SET sp_money='".$money."' WHERE sp_char='".$cdata['cid']."'","NONE");
|
||||
$statsdb->setValue('sp_money',$money);
|
||||
|
||||
$_P->unregisterValue($_IDENT,$_CB);
|
||||
}
|
||||
|
||||
$this->registerValue("_race","_statsdb_race");
|
||||
function _statsdb_race($race,$_P,$_CB) {
|
||||
global $cdata,$DBc,$statsdb;
|
||||
$_IDENT = "_race";
|
||||
|
||||
$race = "r_".strtolower($race);
|
||||
|
||||
#$DBc->sendSQL("UPDATE stat_players SET sp_race='".$race."' WHERE sp_char='".$cdata['cid']."'","NONE");
|
||||
$statsdb->setValue('sp_race',$race);
|
||||
|
||||
$_P->unregisterValue($_IDENT,$_CB);
|
||||
}
|
||||
|
||||
$this->registerValue("yubopoints","_statsdb_yubototal");
|
||||
function _statsdb_yubototal($yubo,$_P,$_CB) {
|
||||
global $cdata,$DBc,$statsdb;
|
||||
$_IDENT = "yubopoints";
|
||||
|
||||
#$DBc->sendSQL("UPDATE stat_players SET sp_yubototal='".$yubo."' WHERE sp_char='".$cdata['cid']."'","NONE");
|
||||
$statsdb->setValue('sp_yubototal',$yubo);
|
||||
|
||||
$_P->unregisterValue($_IDENT,$_CB);
|
||||
}
|
||||
|
||||
$this->registerValue("petcount","_statsdb_mekcount");
|
||||
function _statsdb_mekcount($count,$_P,$_CB) {
|
||||
global $cdata,$DBc,$statsdb;
|
||||
$_IDENT = "petcount";
|
||||
|
||||
#$DBc->sendSQL("UPDATE stat_players SET sp_mekcount='".$count."' WHERE sp_char='".$cdata['cid']."'","NONE");
|
||||
$statsdb->setValue('sp_mekcount',$count);
|
||||
|
||||
$_P->unregisterValue($_IDENT,$_CB);
|
||||
}
|
||||
|
||||
$this->registerEntity("skilllist","_statsdb_maxlevel");
|
||||
function _statsdb_maxlevel($skills,$_P,$_CB) {
|
||||
global $cdata,$DBc,$log,$statsdb;
|
||||
$_IDENT = "skilllist";
|
||||
|
||||
#$log->logf("rcv skilllist: ".var_export($skills,true));
|
||||
|
||||
$lvl = 0;
|
||||
foreach($skills->skills as $elem) {
|
||||
if($elem->current > $lvl) {
|
||||
$lvl = $elem->current;
|
||||
}
|
||||
}
|
||||
|
||||
#$DBc->sendSQL("UPDATE stat_players SET sp_maxlevel='".$lvl."' WHERE sp_char='".$cdata['cid']."'","NONE");
|
||||
$statsdb->setValue('sp_maxlevel',$lvl);
|
||||
|
||||
$_P->unregisterEntity($_IDENT,$_CB);
|
||||
}
|
||||
|
||||
$this->registerValue("_guildid","_statsdb_guildid");
|
||||
function _statsdb_guildid($id,$_P,$_CB) {
|
||||
global $cdata,$DBc,$statsdb;
|
||||
$_IDENT = "_guildid";
|
||||
|
||||
#$DBc->sendSQL("UPDATE stat_players SET sp_guildid='".$id."' WHERE sp_char='".$cdata['cid']."'","NONE");
|
||||
$statsdb->setValue('sp_guildid',$id);
|
||||
|
||||
$_P->unregisterValue($_IDENT,$_CB);
|
||||
}
|
||||
|
||||
$this->registerValue("itemcount","_statsdb_itemcount");
|
||||
function _statsdb_itemcount($count,$_P,$_CB) {
|
||||
global $cdata,$DBc,$statsdb;
|
||||
$_IDENT = "itemcount";
|
||||
|
||||
#$DBc->sendSQL("UPDATE stat_players SET sp_itemcount='".$count."' WHERE sp_char='".$cdata['cid']."'","NONE");
|
||||
$statsdb->setValue('sp_itemcount',$count);
|
||||
|
||||
$_P->unregisterValue($_IDENT,$_CB);
|
||||
}
|
||||
?>
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
class BillingSummary extends SourceDriver {
|
||||
|
||||
|
||||
function drive($cdata) {
|
||||
/*
|
||||
global $DBc_char,$_DISPATCHER;
|
||||
|
||||
$res = $DBc_char->sendSQL("SELECT SUM(amount) as anz, currency FROM coupons_billing WHERE iduser='".$cdata['aid']."' AND status='captured' GROUP by 'currency'","ARRAY");
|
||||
|
||||
$billed = 0;
|
||||
|
||||
$sz = sizeof($res);
|
||||
for($i=0;$i<$sz;$i++) {
|
||||
if($res[$i]['currency'] == "USD") {
|
||||
$res[$i]['anz'] = $res[$i]['anz']*0.7950;
|
||||
}
|
||||
|
||||
if($res[$i]['currency'] == "GBP") {
|
||||
$res[$i]['anz'] = $res[$i]['anz']*1.2623;
|
||||
}
|
||||
|
||||
$billed += $res[$i]['anz'];
|
||||
}
|
||||
|
||||
$_DISPATCHER->dispatchValue("user_billed_sum",$billed);*/
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -26,6 +26,8 @@
|
|||
require_once($BASE_PATH."/entity/FriendOf_entity.php");
|
||||
require_once($BASE_PATH."/entity/Title_entity.php");
|
||||
require_once($BASE_PATH."/entity/RespawnPoints_entity.php");
|
||||
require_once($BASE_PATH."/entity/DeathPenalty_entity.php");
|
||||
require_once($BASE_PATH."/entity/TPlist_entity.php");
|
||||
|
||||
class PDRtoXMLdriver extends SourceDriver {
|
||||
private $ignore;
|
||||
|
@ -40,12 +42,23 @@
|
|||
private $petcount;
|
||||
private $friendlist;
|
||||
private $itemcount;
|
||||
private $tplist;
|
||||
private $hasChoice;
|
||||
private $hasExcellent;
|
||||
private $hasSupreme;
|
||||
private $itemignore;
|
||||
|
||||
private $tracked_items;
|
||||
private $tracked_items_new;
|
||||
|
||||
private $tool_list;
|
||||
|
||||
private $respawn_outer = 0; // needed to fetch respawn points due to nested tags with same name...
|
||||
|
||||
private $pathid = array();
|
||||
|
||||
function PDRtoXMLdriver() {
|
||||
global $DBc,$cdata;
|
||||
|
||||
$this->lock = 0;
|
||||
$this->open = null;
|
||||
|
@ -60,6 +73,23 @@
|
|||
$this->skills = new SkillList();
|
||||
$this->mission = new MissionList();
|
||||
$this->friendlist = new Friendlist();
|
||||
$this->tplist = new TPlist();
|
||||
|
||||
$this->hasChoice = false;
|
||||
$this->hasExcellent = false;
|
||||
$this->hasSupreme = false;
|
||||
|
||||
$this->tool_list = array('itrtje.sitem','icokamtjewel_1.sitem','icokamtjewel_2.sitem','icokartjewel_1.sitem','icokartjewel_2.sitem','itjewel.sitem','itmwea.sitem','itrtmw.sitem','icokamtmwea_1.sitem','icokamtmwea_2.sitem','icokartmwea_1.sitem','icokartmwea_2.sitem','itrtfo.sitem','itforage.sitem','itforagekam_ep2_1.sitem','itforagekam_ep2_2.sitem','itforagekam_ep2_3.sitem','itforagekar_ep2_1.sitem','itforagekar_ep2_2.sitem','itforagekar_ep2_3.sitem','icokamtforage_1.sitem','icokamtforage_2.sitem','icokartforage_1.sitem','icokartforage_2.sitem','itrwea.sitem','itrtrw.sitem','icokamtrwea_1.sitem','icokamtrwea_2.sitem','icokartrwea_1.sitem','icokartrwea_2.sitem','itammo.sitem','itrtam.sitem','icokamtammo_1.sitem','icokamtammo_2.sitem','icokartammo_1.sitem','icokartammo_2.sitem','itarmor.sitem','itrtar.sitem','icokamtarmor_1.sitem','icokamtarmor_2.sitem','icokartarmor_1.sitem','icokartarmor_2.sitem');
|
||||
|
||||
$this->itemignore = false;
|
||||
|
||||
$this->tracked_items = array();
|
||||
$res = $DBc->sendSQL("SELECT api_item FROM ach_player_item WHERE api_player='".$cdata['cid']."'","ARRAY");
|
||||
foreach($res as $elem) {
|
||||
$this->tracked_items[] = $elem['api_item'];
|
||||
}
|
||||
|
||||
$this->tracked_items_new = array();
|
||||
|
||||
//these nodes are ignored, but children are processed
|
||||
$this->ignore = array();
|
||||
|
@ -84,7 +114,6 @@
|
|||
$this->ignore_block[] = "_CONSUMABLEOVERDOSEENDDATES";
|
||||
$this->ignore_block[] = "_MODIFIERSINDB";
|
||||
$this->ignore_block[] = "_MISSIONS";
|
||||
$this->ignore_block[] = "_ITEMSINSHOPSTORE";
|
||||
$this->ignore_block[] = "RINGREWARDPOINTS";
|
||||
$this->ignore_block[] = "_PACT";
|
||||
$this->ignore_block[] = "_KNOWNPHRASES";
|
||||
|
@ -96,12 +125,13 @@
|
|||
$this->ignore_block[] = "_KNOWNBRICKS";
|
||||
$this->ignore_block[] = "_BOUGHTPHRASES";
|
||||
$this->ignore_block[] = "SKILLPOINTS";
|
||||
$this->ignore_block[] = "SPENTSKILLPOINTS";
|
||||
#$this->ignore_block[] = "SPENTSKILLPOINTS";
|
||||
$this->ignore_block[] = "_LASTLOGSTATS";
|
||||
$this->ignore_block[] = "FACTIONPOINTS";
|
||||
}
|
||||
|
||||
function drive($cdata) {
|
||||
global $_DISPATCHER,$MY_PATH,$log;
|
||||
global $_DISPATCHER,$MY_PATH,$log,$DBc;
|
||||
|
||||
#$file = $this->conf['xml_dir']."account_".$uid."_".$slot."_pdr.xml";
|
||||
$file = $_REQUEST['file'];
|
||||
|
@ -129,9 +159,23 @@
|
|||
#echo var_export($this->gear,true);
|
||||
$_DISPATCHER->dispatchEntity($this->skills->getName(),$this->skills);
|
||||
$_DISPATCHER->dispatchEntity($this->friendlist->getName(),$this->friendlist);
|
||||
#$_DISPATCHER->dispatchEntity($this->skills->mission(),$this->mission);
|
||||
$_DISPATCHER->dispatchEntity($this->tplist->getName(),$this->tplist);
|
||||
$_DISPATCHER->dispatchValue('petcount',$this->petcount);
|
||||
$_DISPATCHER->dispatchValue('itemcount',$this->itemcount);
|
||||
|
||||
$_DISPATCHER->dispatchValue('has_choice',$this->hasChoice);
|
||||
$_DISPATCHER->dispatchValue('has_excellent',$this->hasExcellent);
|
||||
$_DISPATCHER->dispatchValue('has_supreme',$this->hasSupreme);
|
||||
|
||||
$qry = array();
|
||||
foreach($this->tracked_items_new as $elem) {
|
||||
$qry[] = "('".$DBc->mre($elem)."','".$cdata['cid']."','".time()."')";
|
||||
}
|
||||
if(sizeof($qry) > 0) {
|
||||
$DBc->sendSQL("INSERT DELAYED INTO ach_player_item (api_item,api_player,api_date) VALUES ".implode(',',$qry),"NONE");
|
||||
}
|
||||
|
||||
$DBc->sendSQL("DELETE FROM ach_player_item WHERE api_date<'".(time()-605800)."'","NONE");
|
||||
}
|
||||
|
||||
function startElement($parser, $name, $attrs) {
|
||||
|
@ -154,8 +198,40 @@
|
|||
return null;
|
||||
}
|
||||
|
||||
/* has shop item */
|
||||
if($name == '_ITEMSFORSALE') {
|
||||
$this->lock = 1;
|
||||
$this->ignore_block[] = "_ITEMSINSHOPSTORE";
|
||||
$_DISPATCHER->dispatchValue('has_store',true);
|
||||
}
|
||||
|
||||
/* death penalty */
|
||||
if($name == "_DEATHPENALTIES") {
|
||||
$this->open = "_DEATHPENALTIES";
|
||||
$this->entity = new DeathPenalty();
|
||||
return null;
|
||||
}
|
||||
|
||||
if($this->open == "_DEATHPENALTIES") {
|
||||
if($name == "_NBDEATH") {
|
||||
$this->entity->NbDeath = $attrs['VALUE'];
|
||||
}
|
||||
|
||||
if($name == "_CURRENTDEATHXP") {
|
||||
$this->entity->CurrentDeathXP = $attrs['VALUE'];
|
||||
}
|
||||
|
||||
if($name == "_DEATHXPTOGAIN") {
|
||||
$this->entity->DeathXPToGain = $attrs['VALUE'];
|
||||
}
|
||||
|
||||
if($name == "_BONUSUPDATETIME") {
|
||||
$this->entity->BonusUpdateTime = $attrs['VALUE'];
|
||||
}
|
||||
}
|
||||
|
||||
/* spawn points */
|
||||
if($name == "RESPAWNPOINTS" && !$attrs["VALUE"]) {
|
||||
if($name == "RESPAWNPOINTS" && !$attrs['VALUE']) {
|
||||
$this->open = "RESPAWNPOINTS";
|
||||
$this->entity = new RespawnPoints();
|
||||
return null;
|
||||
|
@ -164,7 +240,7 @@
|
|||
if($this->open == "RESPAWNPOINTS") {
|
||||
if($name == "RESPAWNPOINTS") {
|
||||
$this->respawn_outer = 0;
|
||||
$this->entity->spawns[] = $attrs["VALUE"];
|
||||
$this->entity->spawns[] = $attrs['VALUE'];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -177,12 +253,12 @@
|
|||
if($this->open == "FACTIONPOINTS") {
|
||||
if($name == "__KEY__") {
|
||||
$this->entity = new FactionPoints();
|
||||
$this->entity->faction = $attrs["VALUE"];
|
||||
$this->entity->faction = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
if($name == "__VAL__") {
|
||||
$this->entity->value = $attrs["VALUE"];
|
||||
$this->entity->value = $attrs['VALUE'];
|
||||
$_DISPATCHER->dispatchEntity($this->entity->getName(),$this->entity);
|
||||
$this->entity = null;
|
||||
return null;
|
||||
|
@ -200,20 +276,20 @@
|
|||
if($this->open == "_FAME") {
|
||||
if($name == "__KEY__") {
|
||||
$this->entity = new Fame();
|
||||
$this->entity->faction = $attrs["VALUE"];
|
||||
$this->entity->faction = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
if($name == "FAME") {
|
||||
$this->entity->fame = $attrs["VALUE"];
|
||||
$this->entity->fame = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "FAMEMEMORY") {
|
||||
$this->entity->famememory = $attrs["VALUE"];
|
||||
$this->entity->famememory = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "LASTFAMECHANGETREND") {
|
||||
$this->entity->lastfamechangetrend = $attrs["VALUE"];
|
||||
$this->entity->lastfamechangetrend = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -229,15 +305,15 @@
|
|||
|
||||
if($this->open == "_LASTLOGSTATS") {
|
||||
if($name == "LOGINTIME") {
|
||||
$this->entity->logintime = $attrs["VALUE"];
|
||||
$this->entity->logintime = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "DURATION") {
|
||||
$this->entity->duration = $attrs["VALUE"];
|
||||
$this->entity->duration = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "LOGOFFTIME") {
|
||||
$this->entity->logofftime = $attrs["VALUE"];
|
||||
$this->entity->logofftime = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -253,16 +329,16 @@
|
|||
if($this->open == "_MISSIONHISTORIES") {
|
||||
if($name == "__KEY__") {
|
||||
$this->entity = new Mission();
|
||||
$this->entity->mission = $attrs["VALUE"];
|
||||
$this->entity->mission = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
if($name == "SUCCESSFULL") {
|
||||
$this->entity->successfull = $attrs["VALUE"];
|
||||
$this->entity->successfull = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "UTC_LASTSUCCESSDATE") {
|
||||
$this->entity->utc_lastsuccessdate = $attrs["VALUE"];
|
||||
$this->entity->utc_lastsuccessdate = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -271,14 +347,14 @@
|
|||
|
||||
if($name == "_FRIENDSLIST") {
|
||||
$this->entity = new Friend();
|
||||
$this->entity->id = $attrs["VALUE"];
|
||||
$this->entity->id = $attrs['VALUE'];
|
||||
$this->friendlist->friends[] = $this->entity;
|
||||
$_DISPATCHER->dispatchEntity($this->entity->getName(),$this->entity);
|
||||
}
|
||||
|
||||
if($name == "_ISFRIENDOF") {
|
||||
$this->entity = new FriendOf();
|
||||
$this->entity->id = $attrs["VALUE"];
|
||||
$this->entity->id = $attrs['VALUE'];
|
||||
$this->friendlist->friendof[] = $this->entity;
|
||||
$_DISPATCHER->dispatchEntity($this->entity->getName(),$this->entity);
|
||||
}
|
||||
|
@ -292,12 +368,12 @@
|
|||
if($this->open == "SCOREPERMANENTMODIFIERS") {
|
||||
if($name == "__KEY__") {
|
||||
$this->entity = new PermanentMod();
|
||||
$this->entity->score = $attrs["VALUE"];
|
||||
$this->entity->score = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
if($name == "__VAL__") {
|
||||
$this->entity->value = $attrs["VALUE"];
|
||||
$this->entity->value = $attrs['VALUE'];
|
||||
$_DISPATCHER->dispatchEntity($this->entity->getName(),$this->entity);
|
||||
$this->entity = null;
|
||||
return null;
|
||||
|
@ -315,65 +391,65 @@
|
|||
if($this->open == "_PLAYERPETS") {
|
||||
if($name == "__KEY__") {
|
||||
$this->entity = new Pet();
|
||||
$this->entity->pet = $attrs["VALUE"];
|
||||
$this->entity->pet = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
if($name == "TICKETPETSHEETID") {
|
||||
$this->entity->ticketpetsheetid = $attrs["VALUE"];
|
||||
$this->entity->ticketpetsheetid = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "PETSHEETID") {
|
||||
$this->entity->petsheetid = $attrs["VALUE"];
|
||||
$this->entity->petsheetid = $attrs['VALUE'];
|
||||
$this->petcount++;
|
||||
return null;
|
||||
}
|
||||
if($name == "PRICE") {
|
||||
$this->entity->price = $attrs["VALUE"];
|
||||
$this->entity->price = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "OWNERID") {
|
||||
$this->entity->ownerid = $attrs["VALUE"];
|
||||
$this->entity->ownerid = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "STABLEALIAS") {
|
||||
$this->entity->stablealias = $attrs["VALUE"];
|
||||
$this->entity->stablealias = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "LANDSCAPE_X") {
|
||||
$this->entity->landscape_x = $attrs["VALUE"];
|
||||
$this->entity->landscape_x = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "LANDSCAPE_Y") {
|
||||
$this->entity->landscape_y = $attrs["VALUE"];
|
||||
$this->entity->landscape_y = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "LANDSCAPE_Z") {
|
||||
$this->entity->landscape_z = $attrs["VALUE"];
|
||||
$this->entity->landscape_z = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "UTC_DEATHTICK") {
|
||||
$this->entity->utc_deathtick = $attrs["VALUE"];
|
||||
$this->entity->utc_deathtick = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "PETSTATUS") {
|
||||
$this->entity->petstatus = $attrs["VALUE"];
|
||||
$this->entity->petstatus = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "SLOT") {
|
||||
$this->entity->slot = $attrs["VALUE"];
|
||||
$this->entity->slot = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "ISTPALLOWED") {
|
||||
$this->entity->istpallowed = $attrs["VALUE"];
|
||||
$this->entity->istpallowed = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "SATIETY") {
|
||||
$this->entity->satiety = $attrs["VALUE"];
|
||||
$this->entity->satiety = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "CUSTOMNAME") {
|
||||
$this->entity->customname = $attrs["VALUE"];
|
||||
$this->entity->customname = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -389,12 +465,12 @@
|
|||
if($this->open == "_PHYSICALCHARACTERISTICS") {
|
||||
if($name == "__KEY__") {
|
||||
$this->entity = new PhysCharacs();
|
||||
$this->entity->charac = $attrs["VALUE"];
|
||||
$this->entity->charac = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
if($name == "__VAL__") {
|
||||
$this->entity->value = $attrs["VALUE"];
|
||||
$this->entity->value = $attrs['VALUE'];
|
||||
$_DISPATCHER->dispatchEntity($this->entity->getName(),$this->entity);
|
||||
$this->entity = null;
|
||||
return null;
|
||||
|
@ -412,32 +488,32 @@
|
|||
if($this->open == "PHYSICALSCORES") {
|
||||
if($name == "__KEY__") {
|
||||
$this->entity = new PhysScores();
|
||||
$this->entity->score = $attrs["VALUE"];
|
||||
$this->entity->score = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
if($name == "CURRENT") {
|
||||
$this->entity->current = $attrs["VALUE"];
|
||||
$this->entity->current = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "BASE") {
|
||||
$this->entity->base = $attrs["VALUE"];
|
||||
$this->entity->base = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "MAX") {
|
||||
$this->entity->max = $attrs["VALUE"];
|
||||
$this->entity->max = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "BASEREGENERATEREPOS") {
|
||||
$this->entity->baseregeneraterepos = $attrs["VALUE"];
|
||||
$this->entity->baseregeneraterepos = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "BASEREGENERATEACTION") {
|
||||
$this->entity->baseregenerateaction = $attrs["VALUE"];
|
||||
$this->entity->baseregenerateaction = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "CURRENTREGENERATE") {
|
||||
$this->entity->currentregenerate = $attrs["VALUE"];
|
||||
$this->entity->currentregenerate = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -453,12 +529,12 @@
|
|||
if($this->open == "SKILLPOINTS") {
|
||||
if($name == "__KEY__") {
|
||||
$this->entity = new SkillPoints();
|
||||
$this->entity->skill = $attrs["VALUE"];
|
||||
$this->entity->skill = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
if($name == "__VAL__") {
|
||||
$this->entity->value = $attrs["VALUE"];
|
||||
$this->entity->value = $attrs['VALUE'];
|
||||
$_DISPATCHER->dispatchEntity($this->entity->getName(),$this->entity);
|
||||
$this->entity = null;
|
||||
return null;
|
||||
|
@ -476,12 +552,12 @@
|
|||
if($this->open == "SPENTSKILLPOINTS") {
|
||||
if($name == "__KEY__") {
|
||||
$this->entity = new SpentSkillPoints();
|
||||
$this->entity->skill = $attrs["VALUE"];
|
||||
$this->entity->skill = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
if($name == "__VAL__") {
|
||||
$this->entity->value = $attrs["VALUE"];
|
||||
$this->entity->value = $attrs['VALUE'];
|
||||
$_DISPATCHER->dispatchEntity($this->entity->getName(),$this->entity);
|
||||
$this->entity = null;
|
||||
return null;
|
||||
|
@ -499,28 +575,28 @@
|
|||
if($this->open == "SKILLS") {
|
||||
if($name == "__KEY__") {
|
||||
$this->entity = new Skill();
|
||||
$this->entity->skill = $attrs["VALUE"];
|
||||
$this->entity->skill = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
if($name == "BASE") {
|
||||
$this->entity->base = $attrs["VALUE"];
|
||||
$this->entity->base = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "CURRENT") {
|
||||
$this->entity->current = $attrs["VALUE"];
|
||||
$this->entity->current = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "MAXLVLREACHED") {
|
||||
$this->entity->maxlvlreached = $attrs["VALUE"];
|
||||
$this->entity->maxlvlreached = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "XP") {
|
||||
$this->entity->xp = $attrs["VALUE"];
|
||||
$this->entity->xp = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "XPNEXTLVL") {
|
||||
$this->entity->xpnextlvl = $attrs["VALUE"];
|
||||
$this->entity->xpnextlvl = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -536,19 +612,19 @@
|
|||
|
||||
if($this->open == "POSSTATE") {
|
||||
if($name == "X") {
|
||||
$this->entity->x = $attrs["VALUE"];
|
||||
$this->entity->x = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "Y") {
|
||||
$this->entity->y = $attrs["VALUE"];
|
||||
$this->entity->y = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "Z") {
|
||||
$this->entity->z = $attrs["VALUE"];
|
||||
$this->entity->z = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "HEADING") {
|
||||
$this->entity->heading = $attrs["VALUE"];
|
||||
$this->entity->heading = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -569,99 +645,138 @@
|
|||
|
||||
if($this->iblock == true) {
|
||||
if($name == "__KEY__") {
|
||||
$this->inv = $attrs["VALUE"];
|
||||
$this->inv = $attrs['VALUE'];
|
||||
}
|
||||
if($name == "__VAL__") {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
if($name == "_ITEMS" || $name == "_ITEM") {
|
||||
if($name == '_ITEMS' || $name == '_ITEM') {
|
||||
#echo "i<br>";
|
||||
$this->open = "_ITEM";
|
||||
$this->open = '_ITEM';
|
||||
$this->entity = new Item();
|
||||
$this->entity->inventory = $this->inv;
|
||||
$this->itemcount++;
|
||||
return null;
|
||||
}
|
||||
|
||||
if($this->open == "_ITEM") {
|
||||
if($name == "_CRAFTPARAMETERS") {
|
||||
if($this->open == '_ITEM') {
|
||||
if($this->itemignore == true) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if($name == '_CRAFTPARAMETERS') {
|
||||
$this->icraft = true;
|
||||
return null;
|
||||
}
|
||||
|
||||
if($this->icraft == true) {
|
||||
$this->entity->_craftparameters[strtolower($name)] = $attrs["VALUE"];
|
||||
if($name == 'HPBUFF' || $name == 'SAPBUFF' || $name == 'FOCUSBUFF' || $name == 'STABUFF') {
|
||||
$this->entity->_craftparameters[strtolower($name)] = $attrs['VALUE'];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
if($name == "_ITEMID") {
|
||||
$this->entity->_itemid = $attrs["VALUE"];
|
||||
if($name == '_ITEMID') {
|
||||
$this->entity->_itemid = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "_SHEETID") {
|
||||
if($attrs["VALUE"]{0} == "#") {
|
||||
$tmp = str_replace("#","",$attrs["VALUE"]);
|
||||
if($name == '_SHEETID') {
|
||||
if($attrs['VALUE']{0} == '#') {
|
||||
$tmp = str_replace("#","",$attrs['VALUE']);
|
||||
$res = $DBc->sendSQL("SELECT * FROM ryzom_nimetu_sheets WHERE nsh_numid='".$tmp."'","ARRAY");
|
||||
$attrs["VALUE"] = $res[0]['nsh_name']."".$res[0]['nsh_suffix'];
|
||||
$attrs['VALUE'] = $res[0]['nsh_name']."".$res[0]['nsh_suffix'];
|
||||
}
|
||||
$this->entity->_sheetid = $attrs["VALUE"];
|
||||
|
||||
if(substr($attrs['VALUE'],0,3) == 'tp_') {
|
||||
$this->tplist->tps[] = $attrs['VALUE'];
|
||||
$this->itemignore = true;
|
||||
return null;
|
||||
}
|
||||
|
||||
if(substr($attrs['VALUE'],0,1) == 'm') {
|
||||
$this->itemignore = true;
|
||||
if($this->hasChoice == false || $this->hasExcellent == false || $this->hasSupreme == false) {
|
||||
|
||||
switch(substr($attrs['VALUE'],-9,-8)) {
|
||||
case 'f':
|
||||
$this->hasSupreme = true;
|
||||
break;
|
||||
case 'e':
|
||||
$this->hasExcellent = true;
|
||||
break;
|
||||
case 'd':
|
||||
$this->hasChoice = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
$this->entity->_sheetid = $attrs['VALUE'];
|
||||
|
||||
if($this->entity->inventory != 'bag' && in_array($this->entity->_itemid,$this->tracked_items) && !in_array($this->entity->_sheetid,$this->tool_list)) {
|
||||
$this->itemignore = true;
|
||||
}
|
||||
|
||||
$this->tracked_items_new[] = $this->entity->_itemid;
|
||||
|
||||
return null;
|
||||
}
|
||||
if($name == "_LOCSLOT") {
|
||||
$this->entity->_locslot = $attrs["VALUE"];
|
||||
if($name == '_LOCSLOT') {
|
||||
$this->entity->_locslot = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "_HP") {
|
||||
$this->entity->_hp = $attrs["VALUE"];
|
||||
if($name == '_HP') {
|
||||
$this->entity->_hp = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "_RECOMMENDED") {
|
||||
$this->entity->_recommended = $attrs["VALUE"];
|
||||
if($name == '_RECOMMENDED') {
|
||||
$this->entity->_recommended = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "_CREATORID") {
|
||||
$this->entity->_creatorid = $attrs["VALUE"];
|
||||
if($name == '_CREATORID') {
|
||||
$this->entity->_creatorid = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "_PHRASEID") {
|
||||
$this->entity->_phraseid = $attrs["VALUE"];
|
||||
if($name == '_PHRASEID') {
|
||||
$this->entity->_phraseid = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "_REFINVENTORYSLOT") {
|
||||
$this->entity->_refinventoryslot = $attrs["VALUE"];
|
||||
if($name == '_REFINVENTORYSLOT') {
|
||||
$this->entity->_refinventoryslot = $attrs['VALUE'];
|
||||
#if($this->entity->refinventoryid != null) {
|
||||
$this->gear->items[] = $this->entity;
|
||||
#}
|
||||
return null;
|
||||
}
|
||||
if($name == "REFINVENTORYID") {
|
||||
$this->entity->refinventoryid = $attrs["VALUE"];
|
||||
if($name == 'REFINVENTORYID') {
|
||||
$this->entity->refinventoryid = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "_USENEWSYSTEMREQUIREMENT") {
|
||||
$this->entity->_usenewsystemrequirement = $attrs["VALUE"];
|
||||
if($name == '_USENEWSYSTEMREQUIREMENT') {
|
||||
$this->entity->_usenewsystemrequirement = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "_REQUIREDSKILLLEVEL") {
|
||||
$this->entity->_requiredskilllevel = $attrs["VALUE"];
|
||||
if($name == '_REQUIREDSKILLLEVEL') {
|
||||
$this->entity->_requiredskilllevel = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "_CUSTOMTEXT") {
|
||||
$this->entity->_customtext = $attrs["VALUE"];
|
||||
if($name == '_CUSTOMTEXT') {
|
||||
$this->entity->_customtext = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "_LOCKEDBYOWNER") {
|
||||
$this->entity->_lockedbyowner = $attrs["VALUE"];
|
||||
if($name == '_LOCKEDBYOWNER') {
|
||||
$this->entity->_lockedbyowner = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "_DROPABLE") {
|
||||
$this->entity->_dropable = $attrs["VALUE"];
|
||||
if($name == '_DROPABLE') {
|
||||
$this->entity->_dropable = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
if($name == "STACKSIZE") {
|
||||
$this->entity->stacksize = $attrs["VALUE"];
|
||||
if($name == 'STACKSIZE') {
|
||||
$this->entity->stacksize = $attrs['VALUE'];
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -670,8 +785,8 @@
|
|||
|
||||
|
||||
|
||||
if($attrs["VALUE"] != "") {
|
||||
$_DISPATCHER->dispatchValue(strtolower($name),$attrs["VALUE"]);
|
||||
if($attrs['VALUE'] != '') {
|
||||
$_DISPATCHER->dispatchValue(strtolower($name),$attrs['VALUE']);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -690,6 +805,15 @@
|
|||
return null;
|
||||
}
|
||||
|
||||
/* death penalty */
|
||||
if($name == "_DEATHPENALTIES") {
|
||||
$this->open = null;
|
||||
$this->entity->DeathXPToGain = $this->entity->DeathXPToGain*min(10,$this->entity->NbDeath);
|
||||
$_DISPATCHER->dispatchEntity($this->entity->getName(),$this->entity);
|
||||
$this->entity = null;
|
||||
return null;
|
||||
}
|
||||
|
||||
/* respawn points */
|
||||
if($name == "RESPAWNPOINTS") {
|
||||
$this->respawn_outer++; // increment to track double close at end of block
|
||||
|
@ -709,7 +833,7 @@
|
|||
}
|
||||
|
||||
/* fame */
|
||||
if($name == "__VAL__" && $this->open == "FAME") {
|
||||
if($name == "__VAL__" && $this->open == "_FAME") {
|
||||
$_DISPATCHER->dispatchEntity($this->entity->getName(),$this->entity);
|
||||
$this->entity = null;
|
||||
return null;
|
||||
|
@ -811,23 +935,26 @@
|
|||
}
|
||||
|
||||
/* items */
|
||||
if($name == "_ITEMS" || $name == "_ITEM") {
|
||||
if($name == '_ITEMS' || $name == '_ITEM') {
|
||||
#echo "c<br>";
|
||||
if($this->open == "_ITEM") {
|
||||
if($this->open == '_ITEM') {
|
||||
#echo var_export($this->entity,true);
|
||||
$_DISPATCHER->dispatchEntity($this->entity->getName(),$this->entity);
|
||||
if($this->itemignore == false) {
|
||||
$_DISPATCHER->dispatchEntity($this->entity->getName(),$this->entity);
|
||||
}
|
||||
$this->itemignore = false;
|
||||
$this->entity = null;
|
||||
}
|
||||
$this->open = null;
|
||||
return null;
|
||||
}
|
||||
|
||||
if($name == "INVENTORY") {
|
||||
if($name == 'INVENTORY') {
|
||||
$this->iblock = false;
|
||||
return null;
|
||||
}
|
||||
|
||||
if($name == "_CRAFTPARAMETERS") {
|
||||
if($name == '_CRAFTPARAMETERS') {
|
||||
$this->icraft = false;
|
||||
return null;
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
class DeathPenalty extends Entity {
|
||||
|
||||
public $NbDeath;
|
||||
public $CurrentDeathXP;
|
||||
public $DeathXPToGain;
|
||||
public $BonusUpdateTime;
|
||||
|
||||
function DeathPenalty() {
|
||||
$this->setName("death_penalty");
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
class TPlist extends Entity {
|
||||
public $tps;
|
||||
|
||||
function TPlist() {
|
||||
$this->setName("TPlist");
|
||||
$this->tps = array();
|
||||
}
|
||||
|
||||
function hasTP($tp) {
|
||||
return in_array($tp,$this->tps);
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -58,6 +58,7 @@ $this->def['XML/_PLAYERROOM/ROOMINVENTORY/_ITEMS/_CRAFTPARAMETERS/HEALCASTINGTIM
|
|||
$this->def['XML/_PLAYERROOM/ROOMINVENTORY/_ITEMS/_CRAFTPARAMETERS/HEALPOWERFACTOR'] = array("inventory");
|
||||
$this->def['XML/_PLAYERROOM/ROOMINVENTORY/_ITEMS/_CRAFTPARAMETERS/DEFENSIVEAFFLICTIONCASTINGTIMEFACTOR'] = array("inventory");
|
||||
$this->def['XML/_PLAYERROOM/ROOMINVENTORY/_ITEMS/_CRAFTPARAMETERS/DEFENSIVEAFFLICTIONPOWERFACTOR'] = array("inventory");
|
||||
$this->def['XML/_PLAYERROOM/ROOMINVENTORY/_ITEMS/_CRAFTPARAMETERS/_ENCHANTMENT'] = array("inventory");
|
||||
$this->def['XML/_PLAYERPETS'] = array("inventory");
|
||||
$this->def['XML/_PLAYERPETS/__KEY__'] = array("inventory");
|
||||
$this->def['XML/_PLAYERPETS/__VAL__'] = array("inventory");
|
||||
|
@ -125,6 +126,7 @@ $this->def['XML/INVENTORY/__VAL__/_ITEM/_CRAFTPARAMETERS/HEALCASTINGTIMEFACTOR']
|
|||
$this->def['XML/INVENTORY/__VAL__/_ITEM/_CRAFTPARAMETERS/HEALPOWERFACTOR'] = array("inventory");
|
||||
$this->def['XML/INVENTORY/__VAL__/_ITEM/_CRAFTPARAMETERS/DEFENSIVEAFFLICTIONCASTINGTIMEFACTOR'] = array("inventory");
|
||||
$this->def['XML/INVENTORY/__VAL__/_ITEM/_CRAFTPARAMETERS/DEFENSIVEAFFLICTIONPOWERFACTOR'] = array("inventory");
|
||||
$this->def['XML/INVENTORY/__VAL__/_ITEM/_CRAFTPARAMETERS/_ENCHANTMENT'] = array("inventory");
|
||||
$this->def['XML/INVENTORY/__VAL__/_ITEM/_REFINVENTORYSLOT'] = array("inventory");
|
||||
$this->def['XML/INVENTORY/__VAL__/_ITEM/REFINVENTORYID'] = array("inventory");
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* Logging, logging, logging....
|
||||
*/
|
||||
|
||||
class Logfile {
|
||||
private $logfile;
|
||||
|
||||
function Logfile($f = false) {
|
||||
global $CONF,$MY_PATH;
|
||||
$this->logfile = false;
|
||||
|
||||
if($f != false) {
|
||||
$this->logfile = fopen($MY_PATH.$CONF['logfile'].'.'.date("Ymd",time()).'.txt','a+');
|
||||
#echo "kk";
|
||||
}
|
||||
}
|
||||
|
||||
function logf($t,$nl = true) {
|
||||
$this->write("[".date("H:i:s")."] ".$t);
|
||||
if($nl == true) {
|
||||
$this->write("\n");
|
||||
}
|
||||
}
|
||||
|
||||
function logi($t,$nl = true) {
|
||||
#echo $t;
|
||||
$this->write("[".date("H:i:s")."] > ".$t);
|
||||
if($nl == true) {
|
||||
$this->write("\n");
|
||||
}
|
||||
}
|
||||
|
||||
function write($txt) {
|
||||
#echo $txt;
|
||||
fwrite($this->logfile,$txt);
|
||||
}
|
||||
|
||||
function close() {
|
||||
fclose($this->logfile);
|
||||
#echo "ii";
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -1,77 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
* Code from:
|
||||
* http://www.assemblysys.com/dataServices/php_pointinpolygon.php
|
||||
*
|
||||
* Probably not free to use!!!
|
||||
*/
|
||||
|
||||
class pointLocation {
|
||||
var $pointOnVertex = true; // Check if the point sits exactly on one of the vertices
|
||||
|
||||
function pointLocation() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
function pointInPolygon($point, $polygon, $pointOnVertex = true) {
|
||||
$this->pointOnVertex = $pointOnVertex;
|
||||
|
||||
// Transform string coordinates into arrays with x and y values
|
||||
$point = $this->pointStringToCoordinates($point);
|
||||
$vertices = array();
|
||||
foreach($polygon as $vertex) {
|
||||
$vertices[] = $this->pointStringToCoordinates($vertex);
|
||||
}
|
||||
|
||||
// Check if the point sits exactly on a vertex
|
||||
if($this->pointOnVertex == true and $this->pointOnVertex($point, $vertices) == true) {
|
||||
return "vertex";
|
||||
}
|
||||
|
||||
// Check if the point is inside the polygon or on the boundary
|
||||
$intersections = 0;
|
||||
$vertices_count = count($vertices);
|
||||
|
||||
for($i=1; $i < $vertices_count; $i++) {
|
||||
$vertex1 = $vertices[$i-1];
|
||||
$vertex2 = $vertices[$i];
|
||||
if($vertex1['y'] == $vertex2['y'] and $vertex1['y'] == $point['y'] and $point['x'] > min($vertex1['x'], $vertex2['x']) and $point['x'] < max($vertex1['x'], $vertex2['x'])) { // Check if point is on an horizontal polygon boundary
|
||||
return "boundary";
|
||||
}
|
||||
if($point['y'] > min($vertex1['y'], $vertex2['y']) and $point['y'] <= max($vertex1['y'], $vertex2['y']) and $point['x'] <= max($vertex1['x'], $vertex2['x']) and $vertex1['y'] != $vertex2['y']) {
|
||||
$xinters = ($point['y'] - $vertex1['y']) * ($vertex2['x'] - $vertex1['x']) / ($vertex2['y'] - $vertex1['y']) + $vertex1['x'];
|
||||
if($xinters == $point['x']) { // Check if point is on the polygon boundary (other than horizontal)
|
||||
return "boundary";
|
||||
}
|
||||
if($vertex1['x'] == $vertex2['x'] || $point['x'] <= $xinters) {
|
||||
$intersections++;
|
||||
}
|
||||
}
|
||||
}
|
||||
// If the number of edges we passed through is even, then it's in the polygon.
|
||||
if ($intersections % 2 != 0) {
|
||||
return "inside";
|
||||
}
|
||||
else {
|
||||
return "outside";
|
||||
}
|
||||
}
|
||||
|
||||
function pointOnVertex($point, $vertices) {
|
||||
foreach($vertices as $vertex) {
|
||||
if ($point == $vertex) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
function pointStringToCoordinates($pointString) {
|
||||
$coordinates = explode(" ", $pointString);
|
||||
return array("x" => $coordinates[0], "y" => $coordinates[1]);
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -1,6 +0,0 @@
|
|||
<?php
|
||||
$region = array();
|
||||
|
||||
|
||||
|
||||
?>
|
|
@ -1,26 +0,0 @@
|
|||
<?php
|
||||
$region = array();
|
||||
|
||||
$region['place_starting_zone_arena'] = array("10056 -11594 ","10144 -11726 ","10280 -11670 ","10308 -11558 ","10132 -11498 ","10056 -11594");
|
||||
|
||||
$region['region_newbieland_blight_zone'] = array("9376 -10940","9120 -11148","9048 -11780","9624 -11988","9792 -11732","9960 -11388","9376 -10940");
|
||||
|
||||
$region['region_newbieland_hunting_grounds'] = array("10296 -10812","10232 -11164","10080 -11484","10320 -11540","10824 -11540","11112 -11268","11080 -10804","10640 -10644","10296 -10812");
|
||||
|
||||
$region['kami_enclave'] = array("10416 -11654","10352 -11718","10416 -11770","10488 -11710","10416 -11654");
|
||||
|
||||
$region['karavan embassy'] = array("10388 -11818","10320 -11874","10404 -11922","10456 -11858","10388 -11818");
|
||||
|
||||
$region['region_newbieland_kitins_jungle'] = array("8184 -11076","8680 -11036","8704 -10244","8160 -10252","8184 -11076");
|
||||
|
||||
$region['region_newbieland_starting_zone'] = array("9968 -11346","10384 -11582","10788 -11574","10760 -11962","9892 -12014","9812 -11682","9968 -11346");
|
||||
|
||||
$region['place_shattered_ruins_trone'] = array("9678 -10692","9574 -10778","9668 -10846","9784 -10748","9678 -10692");
|
||||
|
||||
$region['place_shattered_ruins_silan'] = array("9558 -10764 ","9700 -10910 ","9616 -11008 ","9864 -11238 ","10158 -11224 ","10280 -11070 ","10166 -10982 ","9986 -10880 ","9878 -10808 ","9684 -10660 ","9558 -10764");
|
||||
|
||||
$region['region_newbieland_the_shattered_ruins'] = array("9472 -10562 ","9336 -10974 ","9824 -11266 ","10252 -11354 ","10328 -11182 ","10272 -11126 ","10288 -11074 ","10356 -11070 ","10308 -10746 ","9804 -10458 ","9472 -10562");
|
||||
|
||||
$region['region_newbieland_shining_lake'] = array("8608 -11244","8840 -11356","9288 -11044","9488 -10644","9360 -10340","8776 -10380","8624 -10676","8608 -11244");
|
||||
|
||||
?>
|
|
@ -1,82 +0,0 @@
|
|||
<?php
|
||||
$this->registerValue("_money","_statsdb_money");
|
||||
function _statsdb_money($money,$_P,$_CB) {
|
||||
global $cdata,$DBc;
|
||||
$_IDENT = "_money";
|
||||
|
||||
$DBc->sendSQL("INSERT INTO stat_players (sp_char,sp_money) VALUES ('".$cdata['cid']."','".$money."') ON DUPLICATE KEY UPDATE sp_money='".$money."'","NONE");
|
||||
|
||||
$_P->unregisterValue($_IDENT,$_CB);
|
||||
}
|
||||
|
||||
$this->registerValue("_race","_statsdb_race");
|
||||
function _statsdb_race($race,$_P,$_CB) {
|
||||
global $cdata,$DBc;
|
||||
$_IDENT = "_race";
|
||||
|
||||
$race = "r_".strtolower($race);
|
||||
|
||||
$DBc->sendSQL("INSERT INTO stat_players (sp_char,sp_race) VALUES ('".$cdata['cid']."','".$race."') ON DUPLICATE KEY UPDATE sp_race='".$race."'","NONE");
|
||||
|
||||
$_P->unregisterValue($_IDENT,$_CB);
|
||||
}
|
||||
|
||||
$this->registerValue("yubopoints","_statsdb_yubototal");
|
||||
function _statsdb_yubototal($yubo,$_P,$_CB) {
|
||||
global $cdata,$DBc;
|
||||
$_IDENT = "yubopoints";
|
||||
|
||||
$DBc->sendSQL("INSERT INTO stat_players (sp_char,sp_yubototal) VALUES ('".$cdata['cid']."','".$yubo."') ON DUPLICATE KEY UPDATE sp_yubototal='".$yubo."'","NONE");
|
||||
|
||||
$_P->unregisterValue($_IDENT,$_CB);
|
||||
}
|
||||
|
||||
$this->registerValue("petcount","_statsdb_mekcount");
|
||||
function _statsdb_mekcount($count,$_P,$_CB) {
|
||||
global $cdata,$DBc;
|
||||
$_IDENT = "petcount";
|
||||
|
||||
$DBc->sendSQL("INSERT INTO stat_players (sp_char,sp_mekcount) VALUES ('".$cdata['cid']."','".$count."') ON DUPLICATE KEY UPDATE sp_mekcount='".$count."'","NONE");
|
||||
|
||||
$_P->unregisterValue($_IDENT,$_CB);
|
||||
}
|
||||
|
||||
$this->registerValue("skilllist","_statsdb_maxlevel");
|
||||
function _statsdb_maxlevel($skills,$_P,$_CB) {
|
||||
global $cdata,$DBc,$log;
|
||||
$_IDENT = "skilllist";
|
||||
|
||||
$log->logf("rcv skilllist: ".var_export($skills,true));
|
||||
|
||||
$lvl = 0;
|
||||
foreach($skills->skills as $elem) {
|
||||
if($elem->current > $lvl) {
|
||||
$lvl = $elem->current;
|
||||
}
|
||||
}
|
||||
|
||||
$DBc->sendSQL("INSERT INTO stat_players (sp_char,sp_maxlevel) VALUES ('".$cdata['cid']."','".$lvl."') ON DUPLICATE KEY UPDATE sp_maxlevel='".$lvl."'","NONE");
|
||||
|
||||
$_P->unregisterValue($_IDENT,$_CB);
|
||||
}
|
||||
|
||||
$this->registerValue("_guildid","_statsdb_guildid");
|
||||
function _statsdb_guildid($id,$_P,$_CB) {
|
||||
global $cdata,$DBc;
|
||||
$_IDENT = "_guildid";
|
||||
|
||||
$DBc->sendSQL("INSERT INTO stat_players (sp_char,sp_guildid) VALUES ('".$cdata['cid']."','".$id."') ON DUPLICATE KEY UPDATE sp_guildid='".$id."'","NONE");
|
||||
|
||||
$_P->unregisterValue($_IDENT,$_CB);
|
||||
}
|
||||
|
||||
$this->registerValue("itemcount","_statsdb_itemcount");
|
||||
function _statsdb_itemcount($count,$_P,$_CB) {
|
||||
global $cdata,$DBc;
|
||||
$_IDENT = "itemcount";
|
||||
|
||||
$DBc->sendSQL("INSERT INTO stat_players (sp_char,sp_itemcount) VALUES ('".$cdata['cid']."','".$count."') ON DUPLICATE KEY UPDATE sp_itemcount='".$count."'","NONE");
|
||||
|
||||
$_P->unregisterValue($_IDENT,$_CB);
|
||||
}
|
||||
?>
|
|
@ -1,16 +1,16 @@
|
|||
-- --------------------------------------------------------
|
||||
-- Host: 178.33.225.92
|
||||
-- Server version: 5.5.28-0ubuntu0.12.04.2-log - (Ubuntu)
|
||||
-- Server OS: debian-linux-gnu
|
||||
-- HeidiSQL version: 7.0.0.4053
|
||||
-- Date/time: 2012-12-10 14:52:03
|
||||
-- Server Version: 5.5.28-0ubuntu0.12.04.2-log - (Ubuntu)
|
||||
-- Server Betriebssystem: debian-linux-gnu
|
||||
-- HeidiSQL Version: 7.0.0.4328
|
||||
-- --------------------------------------------------------
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_achievement
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_achievement
|
||||
CREATE TABLE IF NOT EXISTS `ach_achievement` (
|
||||
`aa_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`aa_category` bigint(20) unsigned NOT NULL,
|
||||
|
@ -24,10 +24,10 @@ CREATE TABLE IF NOT EXISTS `ach_achievement` (
|
|||
PRIMARY KEY (`aa_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_achievement_lang
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_achievement_lang
|
||||
CREATE TABLE IF NOT EXISTS `ach_achievement_lang` (
|
||||
`aal_achievement` bigint(20) unsigned NOT NULL,
|
||||
`aal_lang` varchar(2) COLLATE utf8_bin NOT NULL,
|
||||
|
@ -36,10 +36,10 @@ CREATE TABLE IF NOT EXISTS `ach_achievement_lang` (
|
|||
PRIMARY KEY (`aal_achievement`,`aal_lang`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_atom
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_atom
|
||||
CREATE TABLE IF NOT EXISTS `ach_atom` (
|
||||
`atom_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`atom_objective` bigint(20) unsigned NOT NULL,
|
||||
|
@ -50,10 +50,10 @@ CREATE TABLE IF NOT EXISTS `ach_atom` (
|
|||
KEY `atom_objective` (`atom_objective`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_category
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_category
|
||||
CREATE TABLE IF NOT EXISTS `ach_category` (
|
||||
`ac_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`ac_parent` bigint(20) unsigned DEFAULT NULL,
|
||||
|
@ -62,13 +62,15 @@ CREATE TABLE IF NOT EXISTS `ach_category` (
|
|||
`ac_dev` tinyint(1) unsigned NOT NULL DEFAULT '0',
|
||||
`ac_heroic` tinyint(1) unsigned NOT NULL,
|
||||
`ac_contest` tinyint(1) unsigned NOT NULL,
|
||||
`ac_allow_civ` tinyint(1) unsigned NOT NULL,
|
||||
`ac_allow_cult` tinyint(1) unsigned NOT NULL,
|
||||
PRIMARY KEY (`ac_id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_category_lang
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_category_lang
|
||||
CREATE TABLE IF NOT EXISTS `ach_category_lang` (
|
||||
`acl_category` bigint(20) unsigned NOT NULL,
|
||||
`acl_lang` varchar(2) COLLATE utf8_bin NOT NULL,
|
||||
|
@ -76,10 +78,10 @@ CREATE TABLE IF NOT EXISTS `ach_category_lang` (
|
|||
PRIMARY KEY (`acl_category`,`acl_lang`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_fb_token
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_fb_token
|
||||
CREATE TABLE IF NOT EXISTS `ach_fb_token` (
|
||||
`aft_player` bigint(20) unsigned NOT NULL,
|
||||
`aft_token` varchar(255) NOT NULL,
|
||||
|
@ -88,10 +90,10 @@ CREATE TABLE IF NOT EXISTS `ach_fb_token` (
|
|||
PRIMARY KEY (`aft_player`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_objective
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_objective
|
||||
CREATE TABLE IF NOT EXISTS `ach_objective` (
|
||||
`ao_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`ao_task` bigint(20) unsigned NOT NULL,
|
||||
|
@ -103,10 +105,10 @@ CREATE TABLE IF NOT EXISTS `ach_objective` (
|
|||
KEY `ao_task` (`ao_task`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_objective_lang
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_objective_lang
|
||||
CREATE TABLE IF NOT EXISTS `ach_objective_lang` (
|
||||
`aol_objective` bigint(20) unsigned NOT NULL,
|
||||
`aol_lang` varchar(2) COLLATE utf8_bin NOT NULL,
|
||||
|
@ -114,67 +116,76 @@ CREATE TABLE IF NOT EXISTS `ach_objective_lang` (
|
|||
PRIMARY KEY (`aol_objective`,`aol_lang`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_player_atom
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_player_atom
|
||||
CREATE TABLE IF NOT EXISTS `ach_player_atom` (
|
||||
`apa_atom` bigint(20) unsigned NOT NULL,
|
||||
`apa_player` bigint(20) unsigned NOT NULL,
|
||||
`apa_atom` bigint(10) unsigned NOT NULL,
|
||||
`apa_player` bigint(10) unsigned NOT NULL,
|
||||
`apa_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`apa_date` bigint(20) unsigned NOT NULL,
|
||||
`apa_expire` blob,
|
||||
`apa_state` enum('GRANT','DENY') COLLATE utf8_bin NOT NULL,
|
||||
`apa_value` bigint(20) unsigned NOT NULL,
|
||||
PRIMARY KEY (`apa_id`),
|
||||
KEY `apa_atom` (`apa_atom`,`apa_player`),
|
||||
KEY `apa_state` (`apa_state`),
|
||||
KEY `apa_atom_2` (`apa_atom`,`apa_player`,`apa_state`),
|
||||
KEY `apa_player` (`apa_player`),
|
||||
KEY `apa_atom_3` (`apa_atom`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
KEY `apa_atom_2` (`apa_atom`,`apa_player`,`apa_state`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=FIXED;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_player_objective
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_player_item
|
||||
CREATE TABLE IF NOT EXISTS `ach_player_item` (
|
||||
`api_item` varchar(32) COLLATE utf8_bin NOT NULL,
|
||||
`api_player` int(10) unsigned NOT NULL,
|
||||
`api_date` bigint(20) unsigned NOT NULL,
|
||||
PRIMARY KEY (`api_item`,`api_player`),
|
||||
KEY `Index 2` (`api_player`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin DELAY_KEY_WRITE=1 ROW_FORMAT=FIXED;
|
||||
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_player_objective
|
||||
CREATE TABLE IF NOT EXISTS `ach_player_objective` (
|
||||
`apo_objective` bigint(20) unsigned NOT NULL,
|
||||
`apo_player` bigint(20) unsigned NOT NULL,
|
||||
`apo_date` bigint(20) unsigned NOT NULL,
|
||||
PRIMARY KEY (`apo_objective`,`apo_player`),
|
||||
KEY `apo_player` (`apo_player`),
|
||||
KEY `apo_objective` (`apo_objective`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
PRIMARY KEY (`apo_objective`,`apo_player`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin DELAY_KEY_WRITE=1 ROW_FORMAT=FIXED;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_player_task
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_player_task
|
||||
CREATE TABLE IF NOT EXISTS `ach_player_task` (
|
||||
`apt_task` bigint(20) unsigned NOT NULL,
|
||||
`apt_player` bigint(20) unsigned NOT NULL,
|
||||
`apt_date` bigint(20) unsigned NOT NULL,
|
||||
`apt_fb` tinyint(1) unsigned NOT NULL,
|
||||
PRIMARY KEY (`apt_task`,`apt_player`),
|
||||
KEY `apt_player` (`apt_player`),
|
||||
KEY `apt_task` (`apt_task`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
PRIMARY KEY (`apt_task`,`apt_player`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin DELAY_KEY_WRITE=1;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_player_valuecache
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_player_valuecache
|
||||
CREATE TABLE IF NOT EXISTS `ach_player_valuecache` (
|
||||
`apv_name` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`apv_player` bigint(20) unsigned NOT NULL,
|
||||
`apv_name` varchar(10) COLLATE utf8_bin NOT NULL,
|
||||
`apv_player` bigint(10) unsigned NOT NULL,
|
||||
`apv_value` varchar(255) COLLATE utf8_bin NOT NULL,
|
||||
`apv_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`apv_date` bigint(20) unsigned NOT NULL,
|
||||
PRIMARY KEY (`apv_name`,`apv_player`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
PRIMARY KEY (`apv_id`),
|
||||
UNIQUE KEY `key1` (`apv_name`,`apv_player`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin DELAY_KEY_WRITE=1 ROW_FORMAT=FIXED;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_task
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_task
|
||||
CREATE TABLE IF NOT EXISTS `ach_task` (
|
||||
`at_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`at_achievement` bigint(20) unsigned NOT NULL,
|
||||
|
@ -190,10 +201,10 @@ CREATE TABLE IF NOT EXISTS `ach_task` (
|
|||
KEY `at_achievement` (`at_achievement`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_task_lang
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_task_lang
|
||||
CREATE TABLE IF NOT EXISTS `ach_task_lang` (
|
||||
`atl_task` bigint(20) unsigned NOT NULL,
|
||||
`atl_lang` varchar(2) COLLATE utf8_bin NOT NULL,
|
||||
|
@ -202,40 +213,113 @@ CREATE TABLE IF NOT EXISTS `ach_task_lang` (
|
|||
PRIMARY KEY (`atl_task`,`atl_lang`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_task_tie_civ
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_task_tie_align
|
||||
CREATE TABLE IF NOT EXISTS `ach_task_tie_align` (
|
||||
`atta_task` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`atta_alignment` varchar(64) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`atta_task`,`atta_alignment`),
|
||||
KEY `Index 2` (`atta_task`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_task_tie_civ
|
||||
CREATE TABLE IF NOT EXISTS `ach_task_tie_civ` (
|
||||
`attciv_task` bigint(20) unsigned NOT NULL,
|
||||
`attciv_civ` varchar(64) NOT NULL,
|
||||
PRIMARY KEY (`attciv_task`,`attciv_civ`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
`attciv_task` int(10) DEFAULT NULL,
|
||||
`attciv_civ` int(10) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_task_tie_cult
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_task_tie_cult
|
||||
CREATE TABLE IF NOT EXISTS `ach_task_tie_cult` (
|
||||
`attcult_task` bigint(20) unsigned NOT NULL,
|
||||
`attcult_cult` varchar(64) NOT NULL,
|
||||
PRIMARY KEY (`attcult_task`,`attcult_cult`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
`attcult_cult` int(10) DEFAULT NULL,
|
||||
`attcult_task` int(10) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.ach_task_tie_race
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ach_task_tie_race
|
||||
CREATE TABLE IF NOT EXISTS `ach_task_tie_race` (
|
||||
`attr_task` bigint(20) unsigned NOT NULL,
|
||||
`attr_race` varchar(64) NOT NULL,
|
||||
PRIMARY KEY (`attr_task`,`attr_race`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.stat_daily
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ryzom_nimetu_item_data
|
||||
CREATE TABLE IF NOT EXISTS `ryzom_nimetu_item_data` (
|
||||
`sheetid` varchar(64) COLLATE utf8_bin NOT NULL,
|
||||
`type` int(10) unsigned NOT NULL,
|
||||
`item_type` int(10) unsigned NOT NULL,
|
||||
`race` int(10) unsigned NOT NULL,
|
||||
`quality` int(10) unsigned NOT NULL,
|
||||
`craftplan` varchar(32) COLLATE utf8_bin NOT NULL,
|
||||
`skill` varchar(16) COLLATE utf8_bin NOT NULL,
|
||||
`damage` int(10) unsigned NOT NULL,
|
||||
`reach` int(10) unsigned NOT NULL,
|
||||
`ecosystem` int(10) unsigned NOT NULL,
|
||||
`grade` int(10) unsigned NOT NULL,
|
||||
`mpft` bigint(20) unsigned NOT NULL,
|
||||
`color` int(10) unsigned NOT NULL,
|
||||
`is_looted` int(10) unsigned NOT NULL,
|
||||
`is_mission` int(10) unsigned NOT NULL,
|
||||
`index` int(10) unsigned NOT NULL,
|
||||
`txt` text COLLATE utf8_bin NOT NULL,
|
||||
PRIMARY KEY (`sheetid`),
|
||||
KEY `type` (`type`),
|
||||
KEY `item_type` (`item_type`),
|
||||
KEY `type_2` (`type`,`item_type`),
|
||||
KEY `race` (`race`),
|
||||
KEY `quality` (`quality`),
|
||||
KEY `craftplan` (`craftplan`),
|
||||
KEY `skill` (`skill`),
|
||||
KEY `damage` (`damage`),
|
||||
KEY `reach` (`reach`),
|
||||
KEY `ecosystem` (`ecosystem`),
|
||||
KEY `grade` (`grade`),
|
||||
KEY `mpft` (`mpft`),
|
||||
KEY `color` (`color`),
|
||||
KEY `is_looted` (`is_looted`),
|
||||
KEY `is_mission` (`is_mission`),
|
||||
KEY `index` (`index`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ryzom_nimetu_sheets
|
||||
CREATE TABLE IF NOT EXISTS `ryzom_nimetu_sheets` (
|
||||
`nsh_numid` bigint(20) NOT NULL,
|
||||
`nsh_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
|
||||
`nsh_suffix` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
|
||||
PRIMARY KEY (`nsh_numid`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Exportiere Struktur von Tabelle app_achievements.ryzom_title
|
||||
CREATE TABLE IF NOT EXISTS `ryzom_title` (
|
||||
`t_id` varchar(255) CHARACTER SET utf8 NOT NULL,
|
||||
`t_lang` varchar(2) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
|
||||
`t_male` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
|
||||
`t_female` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
|
||||
PRIMARY KEY (`t_id`,`t_lang`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Exportiere Struktur von Tabelle app_achievements.stat_daily
|
||||
CREATE TABLE IF NOT EXISTS `stat_daily` (
|
||||
`sd_day` date NOT NULL DEFAULT '0000-00-00',
|
||||
`sd_players` bigint(20) unsigned DEFAULT NULL,
|
||||
|
@ -257,12 +341,12 @@ CREATE TABLE IF NOT EXISTS `stat_daily` (
|
|||
PRIMARY KEY (`sd_day`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
|
||||
|
||||
-- Dumping structure for table app_achievements.stat_players
|
||||
-- Exportiere Struktur von Tabelle app_achievements.stat_players
|
||||
CREATE TABLE IF NOT EXISTS `stat_players` (
|
||||
`sp_char` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`sp_char` bigint(10) unsigned NOT NULL DEFAULT '0',
|
||||
`sp_money` bigint(20) unsigned DEFAULT NULL,
|
||||
`sp_race` enum('r_matis','r_tryker','r_fyros','r_zorai') DEFAULT NULL,
|
||||
`sp_yubototal` int(10) unsigned DEFAULT NULL,
|
||||
|
@ -271,8 +355,9 @@ CREATE TABLE IF NOT EXISTS `stat_players` (
|
|||
`sp_guildid` int(10) unsigned DEFAULT NULL,
|
||||
`sp_itemcount` int(10) unsigned DEFAULT NULL,
|
||||
PRIMARY KEY (`sp_char`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 DELAY_KEY_WRITE=1;
|
||||
|
||||
-- Data exporting was unselected.
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=1 */;
|
||||
-- Daten Export vom Benutzer nicht ausgewählt
|
||||
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* open and done.
|
||||
*/
|
||||
|
||||
class AchAchievement extends AchList {
|
||||
class AchAchievement extends AchList implements Tieable {
|
||||
#########################
|
||||
# PHP 5.3 compatible
|
||||
# InDev_trait replaces this in PHP 5.4
|
||||
|
@ -44,7 +44,7 @@
|
|||
protected $template;
|
||||
protected $sticky;
|
||||
|
||||
function AchAchievement($data,$parent) {
|
||||
function AchAchievement($data,&$parent) {
|
||||
global $DBc,$_USER,$_CONF;
|
||||
|
||||
parent::__construct();
|
||||
|
@ -68,7 +68,7 @@
|
|||
$this->template = $res[0]['aal_template'];
|
||||
}
|
||||
|
||||
$res = $DBc->sqlQuery("SELECT * FROM ach_task LEFT JOIN (ach_task_lang) ON (atl_lang='".$_USER->getLang()."' AND atl_task=at_id) LEFT JOIN (ach_player_task) ON (apt_task=at_id AND apt_player='".$_USER->getID()."') WHERE at_achievement='".$this->id."' ORDER by at_torder ASC");
|
||||
$res = $DBc->sqlQuery("SELECT * FROM ach_task LEFT JOIN (ach_task_lang) ON (atl_lang='".$_USER->getLang()."' AND atl_task=at_id) LEFT JOIN (ach_player_task) ON (apt_task=at_id AND apt_player='".$_USER->getID()."') WHERE at_achievement='".$this->id."' AND (NOT EXISTS (SELECT * FROM ach_task_tie_align WHERE atta_task=at_id) OR EXISTS (SELECT * FROM ach_task_tie_align WHERE atta_task=at_id AND atta_alignment LIKE '".$parent->getCurrentCult().'|'.$parent->getCurrentCiv()."')) ORDER by at_torder ASC");
|
||||
|
||||
$sz = sizeof($res);
|
||||
for($i=0;$i<$sz;$i++) {
|
||||
|
@ -112,12 +112,64 @@
|
|||
return $this->parent_id;
|
||||
}
|
||||
|
||||
function getTieRace() {
|
||||
function hasTieRace_open() {
|
||||
#return $this->tie_race;
|
||||
$iter = $this->child_open->getIterator();
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->hasTieRace_open() && !$curr->inDev()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function hasTieAlign_open() {
|
||||
#return $this->tie_civ;
|
||||
$iter = $this->child_open->getIterator();
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->hasTieAlign_open() && !$curr->inDev()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function hasTieRace_done() {
|
||||
#return $this->tie_race;
|
||||
$iter = $this->child_done->getIterator();
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->hasTieRace_done() && !$curr->inDev()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function hasTieAlign_done() {
|
||||
#return $this->tie_civ;
|
||||
$iter = $this->child_done->getIterator();
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->hasTieAlign_done() && !$curr->inDev()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function hasTieRaceDev() {
|
||||
#return $this->tie_race;
|
||||
$iter = $this->nodes->getIterator();
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->hasTieRace()) {
|
||||
if($curr->hasTieRaceDev()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -125,12 +177,12 @@
|
|||
return false;
|
||||
}
|
||||
|
||||
function getTieCiv() {
|
||||
function hasTieAlignDev() {
|
||||
#return $this->tie_civ;
|
||||
$iter = $this->nodes->getIterator();
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->hasTieCiv()) {
|
||||
if($curr->hasTieAlignDev()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -138,25 +190,14 @@
|
|||
return false;
|
||||
}
|
||||
|
||||
function getTieCult() {
|
||||
#return $this->tie_cult;
|
||||
$iter = $this->nodes->getIterator();
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->hasTieCult()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function isTiedRace($r) {
|
||||
function isTiedRace_open($r) {
|
||||
#return $this->tie_race;
|
||||
$iter = $this->nodes->getIterator();
|
||||
$iter = $this->child_open->getIterator();
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->isTiedRace($r)) {
|
||||
if($curr->isTiedRace_open($r)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -164,12 +205,12 @@
|
|||
return false;
|
||||
}
|
||||
|
||||
function isTiedCiv($c) {
|
||||
function isTiedAlign_open($cult,$civ) {
|
||||
#return $this->tie_civ;
|
||||
$iter = $this->nodes->getIterator();
|
||||
$iter = $this->child_open->getIterator();
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->isTiedCiv($c)) {
|
||||
if($curr->isTiedAlign_open($cult,$civ)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -177,12 +218,12 @@
|
|||
return false;
|
||||
}
|
||||
|
||||
function isTiedCult($c) {
|
||||
#return $this->tie_cult;
|
||||
$iter = $this->nodes->getIterator();
|
||||
function isTiedRace_done($r) {
|
||||
#return $this->tie_race;
|
||||
$iter = $this->child_done->getIterator();
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->isTiedCult($c)) {
|
||||
if($curr->isTiedRace_done($r)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -190,6 +231,20 @@
|
|||
return false;
|
||||
}
|
||||
|
||||
function isTiedAlign_done($cult,$civ) {
|
||||
#return $this->tie_civ;
|
||||
$iter = $this->child_done->getIterator();
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->isTiedAlign_done($cult,$civ)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function getImage() {
|
||||
return $this->image;
|
||||
}
|
||||
|
|
|
@ -4,28 +4,34 @@
|
|||
*/
|
||||
|
||||
class AchCategory extends AchList implements Tieable {
|
||||
protected $ties_cult;
|
||||
protected $ties_civ;
|
||||
protected $ties_race;
|
||||
protected $ties_align_done;
|
||||
protected $ties_race_done;
|
||||
protected $ties_align_open;
|
||||
protected $ties_race_open;
|
||||
protected $ties_race_dev;
|
||||
protected $ties_cult_dev;
|
||||
protected $ties_civ_dev;
|
||||
protected $ties_align_dev;
|
||||
protected $cult;
|
||||
protected $civ;
|
||||
protected $race;
|
||||
protected $heroic;
|
||||
protected $contest;
|
||||
protected $allow_civ;
|
||||
protected $allow_cult;
|
||||
|
||||
function AchCategory($id,$race = null,$cult = null,$civ = null) {
|
||||
function AchCategory($id,$race = null,$cult = "c_neutral",$civ = "c_neutral") {
|
||||
global $DBc,$_USER;
|
||||
|
||||
parent::__construct();
|
||||
|
||||
$civ = $DBc->sqlEscape($civ);
|
||||
$cult = $DBc->sqlEscape($cult);
|
||||
if($civ != "%") {
|
||||
$civ = $DBc->sqlEscape($civ);
|
||||
}
|
||||
if($cult != "%") {
|
||||
$cult = $DBc->sqlEscape($cult);
|
||||
}
|
||||
$race = $DBc->sqlEscape($race);
|
||||
|
||||
if($race == null) {
|
||||
/*if($race == null) {
|
||||
$race = $_USER->getRace();
|
||||
}
|
||||
|
||||
|
@ -35,10 +41,11 @@
|
|||
|
||||
if($civ == null) {
|
||||
$civ = $_USER->getCiv();
|
||||
}
|
||||
}*/
|
||||
|
||||
$this->cult = $cult;
|
||||
$this->civ = $civ;
|
||||
$this->rave = $race;
|
||||
|
||||
$this->id = $DBc->sqlEscape($id);
|
||||
|
||||
|
@ -56,61 +63,78 @@
|
|||
}
|
||||
}
|
||||
|
||||
$res = $DBc->sqlQuery("SELECT ac_heroic,ac_contest FROM ach_category WHERE ac_id='".$this->id."'");
|
||||
$res = $DBc->sqlQuery("SELECT ac_heroic,ac_contest,ac_allow_civ,ac_allow_cult FROM ach_category WHERE ac_id='".$this->id."'");
|
||||
$this->heroic = $res[0]['ac_heroic'];
|
||||
$this->contest = $res[0]['ac_contest'];
|
||||
|
||||
//load counts for tie determination
|
||||
/*$res = $DBc->sqlQuery("SELECT count(*) as anz FROM ach_achievement WHERE aa_tie_cult IS NOT NULL AND aa_category='".$this->id."' AND aa_dev='0'");
|
||||
$this->ties_cult = $res[0]['anz'];
|
||||
$this->allow_civ = $res[0]['ac_allow_civ'];
|
||||
$this->allow_cult = $res[0]['ac_allow_cult'];
|
||||
|
||||
$res = $DBc->sqlQuery("SELECT count(*) as anz FROM ach_achievement WHERE aa_tie_civ IS NOT NULL AND aa_category='".$this->id."' AND aa_dev='0'");
|
||||
$this->ties_civ = $res[0]['anz'];
|
||||
|
||||
$res = $DBc->sqlQuery("SELECT count(*) as anz FROM ach_achievement WHERE aa_tie_race IS NOT NULL AND aa_category='".$this->id."' AND aa_dev='0'");
|
||||
$this->ties_race = $res[0]['anz'];
|
||||
|
||||
$res = $DBc->sqlQuery("SELECT count(*) as anz FROM ach_achievement WHERE aa_tie_race IS NOT NULL AND aa_category='".$this->id."'");
|
||||
$this->ties_race_dev = $res[0]['anz'];
|
||||
|
||||
$res = $DBc->sqlQuery("SELECT count(*) as anz FROM ach_achievement WHERE aa_tie_cult IS NOT NULL AND aa_category='".$this->id."'");
|
||||
$this->ties_cult_dev = $res[0]['anz'];
|
||||
|
||||
$res = $DBc->sqlQuery("SELECT count(*) as anz FROM ach_achievement WHERE aa_tie_civ IS NOT NULL AND aa_category='".$this->id."'");
|
||||
$this->ties_civ_dev = $res[0]['anz'];*/
|
||||
|
||||
$iter = $this->nodes->getIterator();
|
||||
$tmp = false;
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->getTieRace()) {
|
||||
if($curr->hasTieRace_open() && !$curr->inDev()) {
|
||||
$tmp = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->ties_race = $tmp;
|
||||
$this->ties_race_open = $tmp;
|
||||
|
||||
$iter = $this->nodes->getIterator();
|
||||
$tmp = false;
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->getTieCiv()) {
|
||||
if($curr->hasTieAlign_open() && !$curr->inDev()) {
|
||||
$tmp = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->ties_civ = $tmp;
|
||||
$this->ties_align_open = $tmp;
|
||||
|
||||
$iter = $this->nodes->getIterator();
|
||||
$tmp = false;
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->getTieCult()) {
|
||||
if($curr->hasTieRace_done() && !$curr->inDev()) {
|
||||
$tmp = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->ties_cult = $tmp;
|
||||
$this->ties_race_done = $tmp;
|
||||
|
||||
$iter = $this->nodes->getIterator();
|
||||
$tmp = false;
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->hasTieAlign_done() && !$curr->inDev()) {
|
||||
$tmp = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->ties_align_done = $tmp;
|
||||
|
||||
$iter = $this->nodes->getIterator();
|
||||
$tmp = false;
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->hasTieRaceDev()) {
|
||||
$tmp = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->ties_race_dev = $tmp;
|
||||
|
||||
$iter = $this->nodes->getIterator();
|
||||
$tmp = false;
|
||||
while($iter->hasNext()) {
|
||||
$curr = $iter->getNext();
|
||||
if($curr->hasTieAlignDev()) {
|
||||
$tmp = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->ties_align_dev = $tmp;
|
||||
}
|
||||
|
||||
#@override Parentum::makeChild()
|
||||
|
@ -118,28 +142,36 @@
|
|||
return new AchAchievement($a,$this);
|
||||
}
|
||||
|
||||
function isTiedRace() {
|
||||
return ($this->ties_race > 0);
|
||||
function isAllowedCult() {
|
||||
return ($this->allow_cult == 1);
|
||||
}
|
||||
|
||||
function isTiedCult() {
|
||||
return ($this->ties_cult > 0);
|
||||
function isAllowedCiv() {
|
||||
return ($this->allow_civ == 1);
|
||||
}
|
||||
|
||||
function isTiedCiv() {
|
||||
return ($this->ties_civ > 0);
|
||||
function hasTieRace_open() {
|
||||
return $this->ties_race_open;
|
||||
}
|
||||
|
||||
function isTiedRaceDev() {
|
||||
return ($this->ties_race_dev > 0);
|
||||
function hasTieAlign_open() {
|
||||
return $this->ties_align_open;
|
||||
}
|
||||
|
||||
function isTiedCultDev() {
|
||||
return ($this->ties_cult_dev > 0);
|
||||
function hasTieRace_done() {
|
||||
return $this->ties_race_done;
|
||||
}
|
||||
|
||||
function isTiedCivDev() {
|
||||
return ($this->ties_civ_dev > 0);
|
||||
function hasTieAlign_done() {
|
||||
return $this->ties_align_done;
|
||||
}
|
||||
|
||||
function hasTieRaceDev() {
|
||||
return $this->ties_race_dev;
|
||||
}
|
||||
|
||||
function hasTieAlignDev() {
|
||||
return $this->ties_align_dev;
|
||||
}
|
||||
|
||||
function getCurrentCiv() {
|
||||
|
@ -154,6 +186,22 @@
|
|||
return $this->race;
|
||||
}
|
||||
|
||||
function isTiedRace_open($r) {
|
||||
return null;
|
||||
}
|
||||
|
||||
function isTiedAlign_open($cult,$civ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
function isTiedRace_done($r) {
|
||||
return null;
|
||||
}
|
||||
|
||||
function isTiedAlign_done($cult,$civ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
function isHeroic() {
|
||||
return ($this->heroic == 1);
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
//read all recent tasks of user
|
||||
//make distinct achievement list
|
||||
|
||||
$res = $DBc->sqlQuery("SELECT DISTINCT aa_id,ach.*,(SELECT aal_name FROM ach_achievement_lang WHERE aal_lang='".$_USER->getLang()."' AND aal_achievement=ach.aa_id) as aal_name, (SELECT aal_template FROM ach_achievement_lang WHERE aal_lang='".$_USER->getLang()."' AND aal_achievement=ach.aa_id) as aal_template FROM ach_achievement as ach,ach_task,ach_player_task WHERE at_achievement=aa_id AND apt_player='".$_USER->getID()."' AND apt_task=at_id ORDER by apt_date DESC LIMIT 0,".$size);
|
||||
$res = $DBc->sqlQuery("SELECT DISTINCT apt_date,aa_id,ach.*,(SELECT aal_name FROM ach_achievement_lang WHERE aal_lang='".$_USER->getLang()."' AND aal_achievement=ach.aa_id) as aal_name, (SELECT aal_template FROM ach_achievement_lang WHERE aal_lang='".$_USER->getLang()."' AND aal_achievement=ach.aa_id) as aal_template FROM ach_achievement as ach,ach_task,ach_player_task WHERE at_achievement=aa_id AND ach.aa_dev='0' AND apt_player='".$_USER->getID()."' AND apt_task=at_id ORDER by apt_date DESC LIMIT 0,".$size);
|
||||
|
||||
#echo var_export($res,true);
|
||||
|
||||
|
@ -107,6 +107,10 @@
|
|||
return "c_neutral";
|
||||
}
|
||||
|
||||
function getCurrentRace() {
|
||||
return "r_matis";
|
||||
}
|
||||
|
||||
function isHeroic() {
|
||||
return false;
|
||||
}
|
||||
|
@ -114,5 +118,55 @@
|
|||
function isContest() {
|
||||
return false;
|
||||
}
|
||||
|
||||
function hasTieRace_open()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
function hasTieAlign_open()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
function hasTieRace_done()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
function hasTieAlign_done()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
function hasTieRaceDev()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
function hasTieAlignDev()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
function isTiedRace_open($r)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
function isTiedAlign_open($cult, $civ)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
function isTiedRace_done($r)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
function isTiedAlign_done($cult, $civ)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -1,5 +1,5 @@
|
|||
<?php
|
||||
class AchTask extends Parentum {
|
||||
class AchTask extends Parentum implements Tieable {
|
||||
#########################
|
||||
# PHP 5.3 compatible
|
||||
# InDev_trait replaces this in PHP 5.4
|
||||
|
@ -38,8 +38,9 @@
|
|||
protected $inherit_obj;
|
||||
private $heritage_list;
|
||||
protected $tie_race;
|
||||
protected $tie_cult;
|
||||
protected $tie_civ;
|
||||
#protected $tie_cult;
|
||||
#protected $tie_civ;
|
||||
protected $tie_align;
|
||||
|
||||
function AchTask($data,$parent) {
|
||||
global $DBc,$_USER,$_CONF;
|
||||
|
@ -88,7 +89,7 @@
|
|||
$this->tie_race[] = $res[$i]['attr_race'];
|
||||
}
|
||||
|
||||
$res = $DBc->sqlQuery("SELECT attcult_cult FROM ach_task_tie_cult WHERE attcult_task='".$this->id."'");
|
||||
/*$res = $DBc->sqlQuery("SELECT attcult_cult FROM ach_task_tie_cult WHERE attcult_task='".$this->id."'");
|
||||
$sz = sizeof($res);
|
||||
|
||||
$this->tie_cult = array();
|
||||
|
@ -102,6 +103,14 @@
|
|||
$this->tie_civ = array();
|
||||
for($i=0;$i<$sz;$i++) {
|
||||
$this->tie_civ[] = $res[$i]['attciv_civ'];
|
||||
}*/
|
||||
|
||||
$res = $DBc->sqlQuery("SELECT atta_alignment FROM ach_task_tie_align WHERE atta_task='".$this->id."'");
|
||||
$sz = sizeof($res);
|
||||
|
||||
$this->tie_align = array();
|
||||
for($i=0;$i<$sz;$i++) {
|
||||
$this->tie_align[] = $res[$i]['atta_alignment'];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -119,6 +128,7 @@
|
|||
$this->addChild($curr);
|
||||
$this->heritage_list->insert($curr);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#@override Parentum::makeChild()
|
||||
|
@ -141,36 +151,74 @@
|
|||
}
|
||||
|
||||
function hasTieRace() {
|
||||
if($this->dev == 1) {
|
||||
return false;
|
||||
}
|
||||
return (sizeof($this->tie_race) != 0);
|
||||
}
|
||||
|
||||
function hasTieCult() {
|
||||
return (sizeof($this->tie_cult) != 0);
|
||||
function hasTieAlign() {
|
||||
if($this->dev == 1) {
|
||||
return false;
|
||||
}
|
||||
return (sizeof($this->tie_align) != 0);
|
||||
}
|
||||
|
||||
function hasTieCiv() {
|
||||
return (sizeof($this->tie_civ) != 0);
|
||||
function hasTieRace_open() {
|
||||
return $this->hasTieRace();
|
||||
}
|
||||
|
||||
function hasTieRace_done() {
|
||||
return $this->hasTieRace();
|
||||
}
|
||||
|
||||
function hasTieAlign_open() {
|
||||
return $this->hasTieAlign();
|
||||
}
|
||||
|
||||
function hasTieAlign_done() {
|
||||
return $this->hasTieAlign();
|
||||
}
|
||||
|
||||
function hasTieRaceDev() {
|
||||
return (sizeof($this->tie_race) != 0);
|
||||
}
|
||||
|
||||
function hasTieAlignDev() {
|
||||
return (sizeof($this->tie_align) != 0);
|
||||
}
|
||||
|
||||
function isTiedRace($r) {
|
||||
if(sizeof($this->tie_race) == 0) {
|
||||
return true;
|
||||
}
|
||||
return in_array($r,$this->race);
|
||||
return in_array($r,$this->tie_race);
|
||||
}
|
||||
|
||||
function isTiedCult($c) {
|
||||
if(sizeof($this->tie_cult) == 0) {
|
||||
function isTiedAlign($cult,$civ) {
|
||||
if($cult == "%" || $civ == "%") {
|
||||
return true;
|
||||
}
|
||||
return in_array($c,$this->tie_cult);
|
||||
if(sizeof($this->tie_align) == 0) {
|
||||
return true;
|
||||
}
|
||||
return in_array(($cult.'|'.$civ),$this->tie_align);
|
||||
}
|
||||
|
||||
function isTiedCiv($c) {
|
||||
if(sizeof($this->tie_civ) == 0) {
|
||||
return true;
|
||||
}
|
||||
return in_array($c,$this->tie_civ);
|
||||
function isTiedRace_open($r) {
|
||||
return $this->isTiedRace($r);
|
||||
}
|
||||
|
||||
function isTiedRace_done($r) {
|
||||
return $this->isTiedRace($r);
|
||||
}
|
||||
|
||||
function isTiedAlign_done($cult,$civ) {
|
||||
return $this->isTiedAlign($cult,$civ);
|
||||
}
|
||||
|
||||
function isTiedAlign_open($cult,$civ) {
|
||||
return $this->isTiedAlign($cult,$civ);
|
||||
}
|
||||
|
||||
function getAchievement() {
|
||||
|
|
|
@ -23,15 +23,15 @@
|
|||
}
|
||||
|
||||
function getRace() {
|
||||
return $this->data['race'];
|
||||
return 'r_'.$this->data['race'];
|
||||
}
|
||||
|
||||
function getCiv() {
|
||||
return $this->data['civilization'];
|
||||
return 'c_'.$this->data['civ'];
|
||||
}
|
||||
|
||||
function getCult() {
|
||||
return $this->data['cult'];
|
||||
return 'c_'.$this->data['cult'];
|
||||
}
|
||||
|
||||
function getName() {
|
||||
|
|
|
@ -6,12 +6,28 @@
|
|||
on a user's cult of civ allegiance.
|
||||
---------------------------*/
|
||||
|
||||
function isTiedCult();
|
||||
function hasTieRace_open();
|
||||
|
||||
function isTiedCiv();
|
||||
function hasTieAlign_open();
|
||||
|
||||
function getCurrentCiv();
|
||||
function hasTieRace_done();
|
||||
|
||||
function getCurrentCult();
|
||||
function hasTieAlign_done();
|
||||
|
||||
function hasTieRaceDev();
|
||||
|
||||
function hasTieAlignDev();
|
||||
|
||||
function isTiedRace_open($r);
|
||||
|
||||
function isTiedAlign_open($cult,$civ);
|
||||
|
||||
function isTiedRace_done($r);
|
||||
|
||||
function isTiedAlign_done($cult,$civ);
|
||||
|
||||
#function getCurrentCiv();
|
||||
|
||||
#function getCurrentCult();
|
||||
}
|
||||
?>
|