Dieser Hack erlaubt es im Chat einige Veränderungen der spielmechanik durchzuführen.
Unter anderem Wetteränderung, Wiederbelebung und Tötung eines Spielers. Andere Emotes sind in Entwicklung.
Viel spass dabei:
common.php, suche:
Code:
//output("$replacements replacements (".($replacements/strlen($straight)).")`n");
while (strpos($commentary,"*hic**hic*"))
$commentary = str_replace("*hic**hic*","*hic*hic*",$commentary);
}//end if
Füge DANACH hinzu:
Code:
if((substr($commentary,0,6)=='/rpcmd')){
//Begin Command Mod by Hadriel v1.6
/* HISTORY: *\
| v1.0 -> release |
| v1.1 -> added 'settings' |
| v1.2 -> bugfixes |
| v1.3 -> bugfixes |
| v1.4 -> added comments |
| -> added this history |
| -> added 'addnews' |
| v1.5 -> bugfixes |
| v1.6 -> bugfixes |
| v1.7 -> added something o__Ô |
\*______________________________*/
// Commands seen at silienta-logd.de | Idea by DoM
if($session['user']['superuser']>=3){
$intro = explode(' ',$commentary,2);
$parts = explode(';',$intro[1]);
switch($parts[0]){
case "userb":
/*
case 1: /rpcmd userb;[userlogin];fullife
-> user [userlogin] gets full life
case 2: /rpcmd userb;[userlogin];onehp
-> user has only 1 hp left
case 3: /rpcmd userb;[userlogin];gold;[pieces]
-> user gets [pieces] gold. can be -[pieces].
case 4: /rpcmd userb;[userlogin];gems;[pieces]
-> user gets [pieces] gems. can be -[pieces].
*/
if(!empty($parts[1])){
switch($parts[2]){
case "fullife":
$frm = "hitpoints = maxhitpoints";
break;
case "onehp":
$frm = "hitpoints = 1";
break;
case "gold":
$frm = "gold = gold + (".$parts[3].")";
break;
case "gems":
$frm = "gems = gems + (".$parts[3].")";
break;
}
mysql_query("UPDATE accounts SET ".$frm." WHERE login = '".$parts[1]."';");
}
return false;
break;
case "addnews":
/*
case 1: /rpcmd addnews;[news]
-> adds a news '[News]'
case 2: /rpcmd addnews;Ich heisse %user% und trage %wep% und %arm%.
-> adds a news 'Ich heisse [username] und trage [userweapon] und [userarmor]
*/
if(!empty($parts[1])){
$parts[1] = str_replace('%user%',$session['user']['name'],$parts[1]);
$parts[1] = str_replace('%wep%',$session['user']['weapon'],$parts[1]);
$parts[1] = str_replace('%arm%',$session['user']['armor'],$parts[1]);
addnews($parts[1]);
return false;
}else{
return false;
}
break;
case "weather":
/*
case 1: /rpcmd weather;Sonnig und Warm
-> Change Weather to 'Sonnig und Warm'
case 2: /rpcmd weather;Sonnig und Warm;[Loginname_of_a_user]
-> Change Weather to 'Sonnig und Warm - Extra für [Name_of_[Loginname_of_a_user]]'
*/
if(!empty($parts[2])){
$sql = "SELECT name FROM accounts WHERE login = '".$parts[2]."';";
$res = mysql_query($sql);
if(mysql_num_rows($res)>0){
$row = mysql_fetch_assoc($res);
$extra = '`0 - Extra für '.$row['name'];
}
}
output('Weather called '.$parts[1].$extra);
savesetting('weather',$parts[1].$extra);
$commentary = '/me ändert das Wetter per göttlicher Macht auf '.$parts[1].$extra;
break;
case "rebirth":
/*
case 1: /rpcmd rebirth;[Loginname_of_a_user]
-> [Loginname_of_a_user] will be alive
*/
if(!empty($parts[1]) && $parts[1]!=$session['user']['login']){
$sql = "SELECT name FROM accounts WHERE login = '".$parts[1]."' AND alive=0 AND loggedin=1;";
$res = mysql_query($sql);
if(mysql_num_rows($res)>0){
$row = mysql_fetch_assoc($res);
$commentary = '/me schenkt '.$row["name"].'`0 neues Leben.';
mysql_query("UPDATE accounts SET alive = 1, hitpoints = maxhitpoints WHERE login = '".$parts[1]."' AND alive=0 AND loggedin=1;");
output('Rebirth called '.$parts[1]);
}else{
return false;
}
}else{
output('Rebirth called '.$parts[1].' - ERROR!');
return false;
}
break;
case "die":
/*
case 1: /rpcmd die;[Loginname_of_a_user]
-> [Loginname_of_a_user] will be dead (works only at the same place!)
*/
$currentpage=$session['user']['restorepage'];
if (strstr($currentpage, "?comscroll=") !=""){
$position=strrpos($currentpage,"?comscroll=");
$currentpage=substr($currentpage,0,$position);
}
if (strstr($currentpage, "&comscroll=") !=""){
$position=strrpos($currentpage,"&comscroll=");
$currentpage=substr($currentpage,0,$position);
}
if (strstr($currentpage, "&c=") !=""){
$position=strrpos($currentpage,"&c=");
$currentpage=substr($currentpage,0,$position);
}
if (strstr($currentpage, "?c=") !=""){
$position=strrpos($currentpage,"?c=");
$currentpage=substr($currentpage,0,$position);
}
output($currentpage);
if(!empty($parts[1]) && $parts[1]!=$session['user']['login']){
$sql = "SELECT name FROM accounts WHERE login = '".$parts[1]."' AND alive=1 AND loggedin=1 AND restorepage LIKE '%".$currentpage."%';";
$res = mysql_query($sql);
if(mysql_num_rows($res)>0){
$row = mysql_fetch_assoc($res);
$commentary = '/me lässt einen Blitz in '.$row["name"].'`0 hineinfahren. '.$row["name"].'`0 stirbt.';
mysql_query("UPDATE accounts SET alive = 0, hitpoints=0 WHERE login = '".$parts[1]."' AND alive=1 AND restorepage LIKE '%".$currentpage."%';");
output('Die called '.$parts[1]);
}else{
return false;
}
}else{
output('Die called '.$parts[1].' - ERROR!');
return false;
}
break;
case "setting":
/*
case 1: /rpcmd setting;[setting_name];[setting_value]
-> Setting [setting_name]'s value will be [setting_value]
*/
if(!empty($parts[1])){
if(!empty($parts[2])){
output("Changed setting ".$parts[1]." (original value ".($settings[$parts[1]]?$settings[$parts[1]]:"`iUNSET`i").") to ".$parts[2]."`n");
savesetting($parts[1],$parts[2]);
}
}
return false;
break;
default:
return false;
break;
}
}else{
return false;
}
//End Command mod by hadriel
}
Edit: funktionsweise:
/rpcmd [command];[value];[extra]
bsp:
/rpcmd weather;Sonnig und Warm
oder:
/rpcmd weather;Sonnig und Warm;Ein_Username