You last visited: Today at 04:05
Advertisement
[PHP]Player information lib mit cache
Discussion on [PHP]Player information lib mit cache within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.
03/20/2014, 21:24
#1
elite*gold: 50
Join Date: Mar 2013
Posts: 2,401
Received Thanks: 1,613
[PHP]Player information lib mit cache
Nur für leute mit Php kenntnissen gedacht!
Also wenn ihr auf der hp iwas machen wollt, sei es im ACP details zu einem character auszugeben oder sonstiges könnte euch das hier unterstützen. Habs aus purer lw gemacht aber kommt mir nicht mit kleine rls! Das sind 2h arbeit gewesen ja! xD
Naja die cache files sehen so aus:
PHP Code:
ID ::: 11159
NAME ::: Rain
LEVEL ::: 80
ACC_ID ::: 1
EXP ::: 277
JOB ::: 6
X ::: 64184
Y ::: 183833
MAP ::: 21
E_X ::: 64184
E_Y ::: 183833
E_MAP ::: 21
HP ::: 3693
MP ::: 1722
PLAYTIME ::: 79
VIT ::: 3
STR ::: 5
INT ::: 5
DEX ::: 3
STATS ::: 238
GOLD ::: 0
IP ::: 5.148.132.52
SKGRP ::: 1
HORSE_LEVEL ::: 0
RIDING ::: 0
HSTATS ::: 0
STATRESET ::: 0
CHANGENAME ::: 0
SKILL_POINT ::: 0
LAST_PLAY ::: 2011 - 05 - 16 16 : 02 : 57
ALIGNMENT ::: 491
Hier der code:
PHP Code:
<?php
class char {
function __construct (){
$this -> charinfo [ 'id' ] = 0 ;
$this -> charinfo [ 'name' ] = "" ;
$this -> charinfo [ 'level' ] = 0 ;
$this -> charinfo [ 'account_id' ] = 0 ;
$this -> charinfo [ 'exp' ] = 0 ;
$this -> charinfo [ 'job' ] = 0 ;
$this -> charinfo [ 'x' ] = 0 ;
$this -> charinfo [ 'y' ] = 0 ;
$this -> charinfo [ 'map_index' ] = 0 ;
$this -> charinfo [ 'exit_x' ] = 0 ;
$this -> charinfo [ 'exit_y' ] = 0 ;
$this -> charinfo [ 'exit_map_index' ] = 0 ;
$this -> charinfo [ 'hp' ] = 0 ;
$this -> charinfo [ 'mp' ] = 0 ;
$this -> charinfo [ 'playtime' ] = 0 ;
$this -> charinfo [ 'ht' ] = 0 ;
$this -> charinfo [ 'st' ] = 0 ;
$this -> charinfo [ 'iq' ] = 0 ;
$this -> charinfo [ 'dx' ] = 0 ;
$this -> charinfo [ 'stat_point' ] = 0 ;
$this -> charinfo [ 'skill_point' ] = 0 ;
$this -> charinfo [ 'alignment' ] = 0 ;
$this -> charinfo [ 'last_play' ] = "" ;
$this -> charinfo [ 'gold' ] = 0 ;
$this -> charinfo [ 'ip' ] = "" ;
$this -> charinfo [ 'skill_group' ] = 0 ;
$this -> charinfo [ 'horse_level' ] = 0 ;
$this -> charinfo [ 'horse_riding' ] = 0 ;
$this -> charinfo [ 'horse_skill_point' ] = 0 ;
$this -> charinfo [ 'stat_reset_count' ] = 0 ;
$this -> charinfo [ 'change_name' ] = 0 ;
$this -> cache = new char_cachemanager ();
}
public function loadPlayerById ( $id , $reload = false ){
$cached_char = $this -> cache -> loadCharById ( $id );
if( $cached_char != false && $reload == false ){
$this -> charinfo [ 'id' ] = $id ;
$this -> charinfo [ 'name' ] = $cached_char [ 'NAME' ];
$this -> charinfo [ 'level' ] = $cached_char [ 'LEVEL' ];
$this -> charinfo [ 'account_id' ] = $cached_char [ 'ACC_ID' ];
$this -> charinfo [ 'exp' ] = $cached_char [ 'EXP' ];
$this -> charinfo [ 'job' ] = $cached_char [ 'JOB' ];
$this -> charinfo [ 'x' ] = $cached_char [ 'X' ];
$this -> charinfo [ 'y' ] = $cached_char [ 'Y' ];
$this -> charinfo [ 'map_index' ] = $cached_char [ 'MAP' ];
$this -> charinfo [ 'exit_x' ] = $cached_char [ 'E_X' ];
$this -> charinfo [ 'exit_y' ] = $cached_char [ 'E_Y' ];
$this -> charinfo [ 'exit_map_index' ] = $cached_char [ 'E_MAP' ];
$this -> charinfo [ 'hp' ] = $cached_char [ 'HP' ];
$this -> charinfo [ 'mp' ] = $cached_char [ 'MP' ];
$this -> charinfo [ 'playtime' ] = $cached_char [ 'PLAYTIME' ];
$this -> charinfo [ 'ht' ] = $cached_char [ 'VIT' ];
$this -> charinfo [ 'st' ] = $cached_char [ 'STR' ];
$this -> charinfo [ 'iq' ] = $cached_char [ 'INT' ];
$this -> charinfo [ 'dx' ] = $cached_char [ 'DEX' ];
$this -> charinfo [ 'stat_point' ] = $cached_char [ 'STATS' ];
$this -> charinfo [ 'skill_point' ] = $cached_char [ 'SKILL_POINT' ];
$this -> charinfo [ 'alignment' ] = $cached_char [ 'ALIGNMENT' ];
$this -> charinfo [ 'last_play' ] = $cached_char [ 'LAST_PLAY' ];
$this -> charinfo [ 'gold' ] = $cached_char [ 'GOLD' ];
$this -> charinfo [ 'ip' ] = $cached_char [ 'IP' ];
$this -> charinfo [ 'skill_group' ] = $cached_char [ 'SKGRP' ];
$this -> charinfo [ 'horse_level' ] = $cached_char [ 'HORSE_LEVEL' ];
$this -> charinfo [ 'horse_riding' ] = $cached_char [ 'RIDING' ];
$this -> charinfo [ 'horse_skill_point' ] = $cached_char [ 'HSTATS' ];
$this -> charinfo [ 'stat_reset_count' ] = $cached_char [ 'STATRESET' ];
$this -> charinfo [ 'change_name' ] = $cached_char [ 'CHANGENAME' ];
return $this -> charinfo ;
} else {
$player_mysql = mysql_query ( "SELECT `id`, `account_id`, `name`, `job`, `voice`, `dir`, `x`, `y`, `z`, `map_index`, `exit_x`, `exit_y`, `exit_map_index`, `hp`, `mp`, `stamina`, `random_hp`, `random_sp`, `playtime`, `level`, `level_step`, `st`, `ht`, `dx`, `iq`, `exp`, `gold`, `stat_point`, `skill_point`, `quickslot`, `ip`, `part_main`, `part_base`, `part_hair`, `skill_group`, `skill_level`, `alignment`, `last_play`, `change_name`, `mobile`, `sub_skill_point`, `stat_reset_count`, `horse_hp`, `horse_stamina`, `horse_level`, `horse_hp_droptime`, `horse_riding`, `horse_skill_point` FROM `player`.`player` WHERE id = " . $id );
$player = mysql_fetch_array ( $player_mysql );
if(! $player )
return false ;
foreach ( $player as $key => $info ){
if(! is_numeric ( $key ))
$this -> charinfo [ $key ] = $info ;
}
$this -> cache -> writeCache ( $this -> charinfo );
return $this -> charinfo ;
}
}
public function loadPlayerByName ( $name , $reload = false ){
$cached_char = $this -> cache -> loadCharByName ( $name );
if( $cached_char != false && $reload == false ){
$this -> charinfo [ 'id' ] = $cached_char [ 'ID' ];
$this -> charinfo [ 'name' ] = $cached_char [ 'NAME' ];
$this -> charinfo [ 'level' ] = $cached_char [ 'LEVEL' ];
$this -> charinfo [ 'account_id' ] = $cached_char [ 'ACC_ID' ];
$this -> charinfo [ 'exp' ] = $cached_char [ 'EXP' ];
$this -> charinfo [ 'job' ] = $cached_char [ 'JOB' ];
$this -> charinfo [ 'x' ] = $cached_char [ 'X' ];
$this -> charinfo [ 'y' ] = $cached_char [ 'Y' ];
$this -> charinfo [ 'map_index' ] = $cached_char [ 'MAP' ];
$this -> charinfo [ 'exit_x' ] = $cached_char [ 'E_X' ];
$this -> charinfo [ 'exit_y' ] = $cached_char [ 'E_Y' ];
$this -> charinfo [ 'exit_map_index' ] = $cached_char [ 'E_MAP' ];
$this -> charinfo [ 'hp' ] = $cached_char [ 'HP' ];
$this -> charinfo [ 'mp' ] = $cached_char [ 'MP' ];
$this -> charinfo [ 'playtime' ] = $cached_char [ 'PLAYTIME' ];
$this -> charinfo [ 'ht' ] = $cached_char [ 'VIT' ];
$this -> charinfo [ 'st' ] = $cached_char [ 'STR' ];
$this -> charinfo [ 'iq' ] = $cached_char [ 'INT' ];
$this -> charinfo [ 'dx' ] = $cached_char [ 'DEX' ];
$this -> charinfo [ 'stat_point' ] = $cached_char [ 'STATS' ];
$this -> charinfo [ 'skill_point' ] = $cached_char [ 'SKILL_POINT' ];
$this -> charinfo [ 'alignment' ] = $cached_char [ 'ALIGNMENT' ];
$this -> charinfo [ 'last_play' ] = $cached_char [ 'LAST_PLAY' ];
$this -> charinfo [ 'gold' ] = $cached_char [ 'GOLD' ];
$this -> charinfo [ 'ip' ] = $cached_char [ 'IP' ];
$this -> charinfo [ 'skill_group' ] = $cached_char [ 'SKGRP' ];
$this -> charinfo [ 'horse_level' ] = $cached_char [ 'HORSE_LEVEL' ];
$this -> charinfo [ 'horse_riding' ] = $cached_char [ 'RIDING' ];
$this -> charinfo [ 'horse_skill_point' ] = $cached_char [ 'HSTATS' ];
$this -> charinfo [ 'stat_reset_count' ] = $cached_char [ 'STATRESET' ];
$this -> charinfo [ 'change_name' ] = $cached_char [ 'CHANGENAME' ];
return $this -> charinfo ;
} else {
$player_mysql = mysql_query ( "SELECT `id`, `account_id`, `name`, `job`, `voice`, `dir`, `x`, `y`, `z`, `map_index`, `exit_x`, `exit_y`, `exit_map_index`, `hp`, `mp`, `stamina`, `random_hp`, `random_sp`, `playtime`, `level`, `level_step`, `st`, `ht`, `dx`, `iq`, `exp`, `gold`, `stat_point`, `skill_point`, `quickslot`, `ip`, `part_main`, `part_base`, `part_hair`, `skill_group`, `skill_level`, `alignment`, `last_play`, `change_name`, `mobile`, `sub_skill_point`, `stat_reset_count`, `horse_hp`, `horse_stamina`, `horse_level`, `horse_hp_droptime`, `horse_riding`, `horse_skill_point` FROM inyaproduction_.`player` WHERE name = '" . $name . "'" ) or die( mysql_error ());
$player = mysql_fetch_array ( $player_mysql );
if(! $player )
return false ;
foreach ( $player as $key => $info ){
if(! is_numeric ( $key ))
$this -> charinfo [ $key ] = $info ;
}
$this -> cache -> writeCache ( $this -> charinfo );
return $this -> charinfo ;
}
}
public function setCacheTime ( $seconds ){
$this -> cache -> setCacheTime ( $seconds );
}
function __destruct (){
}
}
class char_cachemanager {
function __construct (){
$this -> cachedir = "./cached_chars/" ;
if(! is_dir ( $this -> cachedir )){
mkdir ( $this -> cachedir );
}
$this -> chars = array();
if(! $this -> loadCachedChars ())
die( "Character Cache: Error on loading cache" );
$this -> cachetime = 300 ; //5 minutes
}
public function setCacheTime ( $seconds ){
$this -> cachetime = $seconds ;
}
public function loadCachedChars (){
$cachefiles = scandir ( $this -> cachedir );
foreach ( $cachefiles as $file ) {
if(!( $file == "." or $file == ".." )){
$filename = $file ;
$temp = explode ( "." , $file );
$file = $temp [ 0 ];
$data = explode ( "_" , $file );
$this -> chars [ $data [ 0 ]][ 'name' ] = $data [ 1 ];
$this -> chars [ $data [ 0 ]][ 'time' ] = $data [ 2 ];
$this -> chars [ $data [ 0 ]][ 'filename' ] = $filename ;
}
};
return true ;
}
public function loadFile ( $filename ){
if( file_exists ( $this -> cachedir . $filename )){
$data = file_get_contents ( $this -> cachedir . $filename );
$lines = explode ( "\n" , $data );
$character = array();
foreach( $lines as $line ){
$detail = explode ( ":::" , $line );
$character [ $detail [ 0 ]] = $detail [ 1 ];
}
return $character ;
}
return false ;
}
public function loadCharById ( $id ){
if(isset( $this -> chars [ $id ]) && $this -> chars [ $id ][ 'time' ] + $this -> cachetime < time ())
return $this -> loadFile ( $this -> chars [ $id ][ 'filename' ]);
return false ;
}
public function loadCharByName ( $name ){
foreach( $this -> chars as $key => $char ){
if( $char [ 'name' ] == $name && $this -> chars [ $key ][ 'time' ] + $this -> $cachetime < time ())
return $this -> loadFile ( $this -> chars [ $key ][ 'filename' ]);
}
return false ;
}
public function writeCache ( $array ){
$filename = $array [ 'id' ]. "_" . $array [ 'name' ]. "_" . time ();
$file = fopen ( $this -> cachedir . $filename , 'w' );
$text = "
ID:::" . $array [ 'id' ]. "
NAME:::" . $array [ 'name' ]. "
LEVEL:::" . $array [ 'level' ]. "
ACC_ID:::" . $array [ 'account_id' ]. "
EXP:::" . $array [ 'exp' ]. "
JOB:::" . $array [ 'job' ]. "
X:::" . $array [ 'x' ]. "
Y:::" . $array [ 'y' ]. "
MAP:::" . $array [ 'map_index' ]. "
E_X:::" . $array [ 'exit_x' ]. "
E_Y:::" . $array [ 'exit_y' ]. "
E_MAP:::" . $array [ 'exit_map_index' ]. "
HP:::" . $array [ 'hp' ]. "
MP:::" . $array [ 'mp' ]. "
PLAYTIME:::" . $array [ 'playtime' ]. "
VIT:::" . $array [ 'ht' ]. "
STR:::" . $array [ 'st' ]. "
INT:::" . $array [ 'iq' ]. "
DEX:::" . $array [ 'dx' ]. "
STATS:::" . $array [ 'stat_point' ]. "
GOLD:::" . $array [ 'gold' ]. "
IP:::" . $array [ 'ip' ]. "
SKGRP:::" . $array [ 'skill_group' ]. "
HORSE_LEVEL:::" . $array [ 'horse_level' ]. "
RIDING:::" . $array [ 'horse_riding' ]. "
HSTATS:::" . $array [ 'horse_skill_point' ]. "
STATRESET:::" . $array [ 'stat_reset_count' ]. "
CHANGENAME:::" . $array [ 'change_name' ]. "
SKILL_POINT:::" . $array [ 'skill_point' ]. "
LAST_PLAY:::" . $array [ 'last_play' ]. "
ALIGNMENT:::" . $array [ 'alignment' ];
fwrite ( $file , $text );
}
}
$character = new char ();
print_r ( $character -> loadPlayerByName ( "Rain" ));
Have fun with that :P
Methoden:
loadPlayerByName($name)
loadPlayerById($id)
setCacheTime($seconds)
unten drunter istn beispiel mit print_r ;D
mysql verbindung muss stehen
03/20/2014, 21:25
#2
elite*gold: 0
Join Date: Mar 2014
Posts: 17
Received Thanks: 2
Oh, ich habe gerade dein zweites Thema beantwortet - Das solltest du wohl schließen lassen, aber hier gilt das selbe wie im anderen Thema =P
03/20/2014, 21:33
#3
elite*gold: 50
Join Date: Mar 2013
Posts: 2,401
Received Thanks: 1,613
Ups.. mein fail. Hab ne blanke seite beim absenden bekommen deshalb mit F5 neu geladen.. war wohl nicht so schlau xD
#closerequest
03/20/2014, 21:42
#4
elite*gold: 906
Join Date: Sep 2009
Posts: 17,294
Received Thanks: 4,400
#closed
Similar Threads
[PHP]Player information lib mit cache
03/21/2014 - Metin2 PServer Guides & Strategies - 6 Replies
Nur für leute mit Php kenntnissen gedacht!
Also wenn ihr auf der hp iwas machen wollt, sei es im ACP details zu einem character auszugeben oder sonstiges könnte euch das hier unterstützen. Habs aus purer lw gemacht aber kommt mir nicht mit kleine rls! Das sind 2h arbeit gewesen ja! xD
Naja die cache files sehen so aus:
ID:::11159
NAME:::Rain
LEVEL:::80
ACC_ID:::1
GTA 5: new Information regarding Single- and Multi-player Mode
07/13/2013 - Gaming News - EN - 14 Replies
Rockstar Games - developer of GTA 5, which is probably the most famous game of this year - seems to be near and dear to their fanbase. They have answered many interesting and frequently asked question during a Community Q&A (Question & Answer), which were about characters, weapons, vehicles and, of course, the multi-player mode.
First of all we would like to shine light on one of the most discussed topics: the multi-player mode. Unfortunately, Rockstar Games provided us with very few...
[Source]Core Server Crash / Cache:destroy player or group
03/26/2011 - Flyff Private Server - 11 Replies
Guten Abend liebe Com.,
Derzeit arbeite ich ein wenig am Source der hier auf ePvPers verwendet wird.
(Direkt voran: Wenns am Source liegt, habt ihr evtl. einen anderen Link?)
Doch habe ich schon ein großes Problem.
Mein CoreServer.exe schmiert die ganze Zeit ab und die CacheServer.exe sieht dann wie folgt aus:
http://www.b-flyff.de/coreserver.png
[Information] Was bedeuten die Zahlen oben?, Was bekomme ich? [Information]
12/16/2010 - WarRock - 3 Replies
Hi com,
wie bestimmt schon ihr alle bemerkt habt, gab es ein Update und somit ein neues Event (Habe ich aber auch gestern gegen 02:00 Uhr gepostet.
Also ich möchte hier mal Klarstellen, was es mit dem Event aufsich hat.
-Was bedeuten diese Zahlen oben Links?
Also, Links steht am Anfang 300, das heißt ihr müsst 300 Kills mit Schneebällen erreichen und bekommt Anschließend einen Preis! Nach 300 kommen 500, dannach 700 und Anschließend 900, vielleicht mehr, was ich leider nicht weiss.
All times are GMT +2. The time now is 04:06 .