@ -0,0 +1,47 @@
|
||||
<?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;
|
||||
}
|
||||
|
||||
?>
|
@ -0,0 +1,39 @@
|
||||
<?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'];
|
||||
}
|
||||
|
||||
|
||||
?>
|
@ -0,0 +1,3 @@
|
||||
<?php
|
||||
|
||||
?>
|
@ -0,0 +1,248 @@
|
||||
/* 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;
|
||||
}
|
After Width: | Height: | Size: 748 B |
After Width: | Height: | Size: 129 B |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 130 B |
After Width: | Height: | Size: 434 B |
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 977 B |
After Width: | Height: | Size: 477 B |
After Width: | Height: | Size: 488 B |
After Width: | Height: | Size: 315 B |
After Width: | Height: | Size: 99 B |
After Width: | Height: | Size: 127 B |
After Width: | Height: | Size: 369 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 6.6 KiB |
@ -0,0 +1,37 @@
|
||||
|
||||
if(window.addEventListener)
|
||||
window.addEventListener("load", tabulation, false);
|
||||
else
|
||||
window.attachEvent("onload", tabulation);
|
||||
|
||||
function tabulation(){
|
||||
var textareas = document.getElementsByTagName("textarea");
|
||||
for(var i = 0, t = textareas.length; i < t; i++){
|
||||
textareas[i].onkeydown = function(e){
|
||||
var tab = (e || window.event).keyCode == 9;
|
||||
if(tab){
|
||||
var tabString = String.fromCharCode(9);
|
||||
var scroll = this.scrollTop;
|
||||
|
||||
if(window.ActiveXObject){
|
||||
var textR = document.selection.createRange();
|
||||
var selection = textR.text;
|
||||
textR.text = tabString + selection;
|
||||
textR.moveStart("character",-selection.length);
|
||||
textR.moveEnd("character", 0);
|
||||
textR.select();
|
||||
}
|
||||
else {
|
||||
var beforeSelection = this.value.substring(0, this.selectionStart);
|
||||
var selection = this.value.substring(this.selectionStart, this.selectionEnd);
|
||||
var afterSelection = this.value.substring(this.selectionEnd);
|
||||
this.value = beforeSelection + tabString + selection + afterSelection;
|
||||
this.setSelectionRange(beforeSelection.length + tabString.length, beforeSelection.length + tabString.length + selection.length);
|
||||
}
|
||||
this.focus();
|
||||
this.scrollTop = scroll;
|
||||
return false;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
@ -0,0 +1 @@
|
||||
<?php echo "api"; ?>
|
@ -0,0 +1,142 @@
|
||||
<?php
|
||||
|
||||
include('../../common/db_lib.php');
|
||||
//require_once('../server_functions_item.php');
|
||||
|
||||
$guilds_cache_timeout = 60*60;
|
||||
$time = time();
|
||||
|
||||
$db = new ServerDatabase('localhost', 'ryzom_api', 'sg4gfgh45bgguifsd', 'ring_live');
|
||||
|
||||
function save_xml($filename, $xml) {
|
||||
$filename = "/home/api/public_html/data/cache/guilds/$filename.xml";
|
||||
$txt_xml = $xml->asXML();
|
||||
// save in clear xml
|
||||
file_put_contents($filename, $txt_xml);
|
||||
// save in clear compressed xml
|
||||
$gz = gzopen($filename.'.gz','w9');
|
||||
gzwrite($gz, $txt_xml);
|
||||
gzclose($gz);
|
||||
}
|
||||
|
||||
function create_guild($out, $filename, $shard) {
|
||||
global $db, $time, $guilds_cache_timeout;
|
||||
|
||||
$src = simplexml_load_file($filename);
|
||||
|
||||
echo "$filename\n";
|
||||
|
||||
$guild = $out->addChild('guild');
|
||||
$guild->addChild('gid', $src->Id['value']);
|
||||
$guild->addChild('name', $src->_Name['value']);
|
||||
$guild->addChild('race', $src->Race['value']);
|
||||
$guild->addChild('icon', $src->Icon['value']);
|
||||
$guild->addChild('creation_date', $src->CreationDate['value']);
|
||||
|
||||
$desc = (string)$src->_Description['value'];
|
||||
$desc = iconv("UTF-8", "ISO-8859-1", $desc);
|
||||
$replace = array('&', '<', '>');
|
||||
$into = array('&', '<', '>');
|
||||
$desc = str_replace($replace, $into, $desc);
|
||||
$guild->addChild('description', $desc);
|
||||
|
||||
// create the full guild xml
|
||||
|
||||
$xml = simplexml_load_string('<guild/>');
|
||||
|
||||
$cache = $xml->addChild('cache');
|
||||
$cache->addAttribute('created', $time);
|
||||
$cache->addAttribute('expire', $time+$guilds_cache_timeout);
|
||||
|
||||
$xml->addChild('name', $src->_Name['value']);
|
||||
$xml->addChild('gid', $src->Id['value']);
|
||||
$xml->addChild('race', $src->Race['value']);
|
||||
$xml->addChild('icon', $src->Icon['value']);
|
||||
$xml->addChild('creation_date', $src->CreationDate['value']);
|
||||
$xml->addChild('shard', $shard);
|
||||
$xml->addChild('description', $desc);
|
||||
$xml->addChild('money', $src->Money['value']);
|
||||
$xml->addChild('building', $src->Building['value']);
|
||||
|
||||
$xml->addChild('cult', strtolower($src->DeclaredCult['value']));
|
||||
$xml->addChild('civ', strtolower($src->DeclaredCiv['value']));
|
||||
|
||||
$motd = (string)$src->_MessageOfTheDay['value'];
|
||||
$motd = iconv("UTF-8", "ISO-8859-1", $motd);
|
||||
$motd = str_replace($replace, $into, $motd);
|
||||
$xml->addChild('motd', $motd);
|
||||
|
||||
// guild members
|
||||
$members = $xml->addChild('members');
|
||||
$i = 0;
|
||||
do {
|
||||
$m = $src->Members->__Key__[$i]['value'];
|
||||
if(!isset($m)) break;
|
||||
$m2 = $src->Members->__Val__[$i];
|
||||
$mem = $members->addChild('member');
|
||||
$cid = hexdec(substr($m2->Members->Id['value'], 3, 10));
|
||||
$mem->addChild('cid', $cid);
|
||||
$sql = "SELECT char_name FROM characters WHERE char_id=$cid";
|
||||
$result = $db->query($sql);
|
||||
$name = $db->fetch_row($result);
|
||||
$db->free_result($result);
|
||||
$mem->addChild('name', $name[0]);
|
||||
$mem->addChild('grade', $m2->Members->Grade['value']);
|
||||
$mem->addChild('joined_date', $m2->Members->EnterTime['value']);
|
||||
$i++;
|
||||
} while(true);
|
||||
|
||||
// guild fame
|
||||
$factions = array('fyros', 'matis', 'tryker', 'zorai', 'kami', 'karavan');
|
||||
$fames = $xml->addChild('fames');
|
||||
$i = 0;
|
||||
do {
|
||||
$f = $src->FameContainer->FameContainer->__Parent__->Entries->__Key__[$i]['value'];
|
||||
if(!isset($f)) break;
|
||||
$f2 = $src->FameContainer->FameContainer->__Parent__->Entries->__Val__[$i];
|
||||
$fac = basename($f2->Sheet['value'], '.faction');
|
||||
if(in_array($fac, $factions)) {
|
||||
$fames->addChild($fac, $f2->Fame['value']);
|
||||
}
|
||||
$i++;
|
||||
} while(true);
|
||||
|
||||
// guild items
|
||||
/* $inventory = $xml->addChild('room');
|
||||
$result = $src->xpath('/xml/GuildInventory/_Items');
|
||||
while(list( , $node) = each($result)) {
|
||||
ryzom_item_insert($inventory, $node);
|
||||
}
|
||||
*/
|
||||
save_xml("guild_".$src->Id['value'], $xml);
|
||||
}
|
||||
|
||||
function create_guilds_xml($shard) {
|
||||
global $time, $guilds_cache_timeout;
|
||||
|
||||
$xml = simplexml_load_string('<guilds/>');
|
||||
|
||||
$cache = $xml->addChild('cache');
|
||||
$cache->addAttribute('created', $time);
|
||||
$cache->addAttribute('expire', $time+$guilds_cache_timeout);
|
||||
$xml->addChild('shard', $shard);
|
||||
|
||||
foreach(glob("/home/api/public_html/data/cache/guilds/guild_?????.xml") as $fn) {
|
||||
create_guild($xml, $fn, $shard);
|
||||
}
|
||||
// $dirname = "tmp/$shard";
|
||||
// if ($handle = opendir($dirname)) {
|
||||
// while (false !== ($file = readdir($handle))) {
|
||||
// if (end(explode(".", $file)) == 'xml') {
|
||||
// create_guild($xml, "$dirname/$file");
|
||||
// }
|
||||
// }
|
||||
// closedir($handle);
|
||||
// }
|
||||
|
||||
save_xml("guilds_$shard", $xml);
|
||||
}
|
||||
|
||||
create_guilds_xml('atys');
|
||||
|
||||
?>
|
@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo $1;
|
||||
|
||||
let "back=($1 & 15) - 1"
|
||||
let "symbol=($1 >> 4 & 63) - 1"
|
||||
let "invert=$1 >> 10 & 1"
|
||||
let "col1R=$1 >> 11 & 255"
|
||||
let "col1G=$1 >> 19 & 255"
|
||||
let "col1B=$1 >> 27 & 255"
|
||||
let "col2R=$1 >> 35 & 255"
|
||||
let "col2G=$1 >> 43 & 255"
|
||||
let "col2B=$1 >> 51 & 255"
|
||||
|
||||
size="$2"
|
||||
|
||||
png_path='/home/api/public_html/data/ryzom/guild_png/';
|
||||
final_path='/home/api/public_html/data/cache/guild_icons/';
|
||||
tmp_path="$final_path/tmp";
|
||||
img_back=`printf $png_path/guild_back_%s_%02d_1.png $size $back`
|
||||
img_back2=`printf $png_path/guild_back_%s_%02d_2.png $size $back`
|
||||
img_symbol=`printf $png_path/guild_symbol_%s_%02d.png $size $symbol`
|
||||
img_final=`printf $final_path/%d_%s.png $1 $size`
|
||||
|
||||
convert $img_back -fill "rgb($col1R,$col1G,$col1B)" -colorize 100,100,100 $tmp_path/$1_$2_part_1.png
|
||||
convert $img_back2 -fill "rgb($col2R,$col2G,$col2B)" -colorize 100,100,100 $tmp_path/$1_$2_part_2.png
|
||||
convert -composite $tmp_path/$1_$2_part_1.png $tmp_path/$1_$2_part_2.png $tmp_path/$1_$2_back.png
|
||||
|
||||
if [[ $invert == 1 ]]
|
||||
then
|
||||
convert -negate $img_symbol $tmp_path/$1_$2_symb.png
|
||||
composite -compose plus $tmp_path/$1_$2_back.png $tmp_path/$1_$2_symb.png $img_final
|
||||
else
|
||||
composite -compose multiply $tmp_path/$1_$2_back.png $img_symbol $img_final
|
||||
fi
|
||||
|
||||
composite -compose copy-opacity $tmp_path/$1_$2_back.png $img_final $img_final
|
||||
|
||||
rm $tmp_path/$1_$2_*
|
@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd /home/api/public_html/server/scripts
|
||||
|
||||
# get guilds
|
||||
|
||||
rm /home/api/public_html/data/cache/guilds/*
|
||||
|
||||
rsync -az --rsh=ssh nevrax@shard.ryzom.com:/home/nevrax/code/ryzom/server/save_shard/live_atys/guilds/guild_*.bin /home/api/public_html/data/cache/guilds/
|
||||
|
||||
./pdr_util -x -s/home/app/web_hg/api/server/scripts/sheet_id.bin /home/api/public_html/data/cache/guilds/guild_*.bin
|
||||
|
||||
rm /home/api/public_html/data/cache/guilds/guild_*.bin
|
||||
|
||||
/usr/bin/php ./create_guilds_xml.php
|
||||
|
||||
rm /home/api/public_html/data/cache/guilds/guild_?????.xml
|
||||
|
||||
rm log.log
|
||||
|
||||
/root/bin/own.sh api /home/api/public_html/data/cache/guilds/
|
||||
|
||||
# get tick
|
||||
|
||||
rsync -az --rsh=ssh nevrax@shard.ryzom.com:/home/nevrax/code/ryzom/server/save_shard/live_atys/game_cycle.ticks /home/api/public_html/data/cache/
|
||||
|
||||
chown api:api /home/api/public_html/data/cache/game_cycle.ticks
|
||||
|
||||
cd -
|