
| Subject: | can someone please convert this php - functiones to delphi [Edit] |
| Posted by: | Ronaldo DeVinche |
| Date: | Fri, 27 Nov 2009 |
{code:php}
<?php
function abrir($archivo){
$fp = fopen($archivo,"rb");
$contenido = fread($fp, filesize($archivo));
fclose($fp);
return $contenido;
}
function decoBmd($tipo, $valor){
switch ($tipo) {
case 2:
$resultado = $valor ^ 171;
break;
case 1:
$resultado = $valor ^ 207;
break;
case 0:
$resultado = $valor ^ 252;
break;
default:
$resultado = 0;
break;
}
return $resultado;
}
function decoBmd2($modo, $pasar, $inicio, $cantidad, $arrastre){
$resultado = '';
for($i=0;$i<$cantidad;$i++){
$tipo = ($inicio + $i + $arrastre) % 3;
$valor =ord($pasar[$i]);
if($modo == 1){
$resultado += decoBmd($tipo, $valor)*pow( 256, $i);
if($resultado>2147483647)
$resultado -= 4294967296;
}
else{
$res_aux = decoBmd($tipo, $valor);
if(($res_aux == 0 || $res_aux == 11 || $res_aux == 10))
break;
if($res_aux!=255)
$resultado .= chr($res_aux);
}
}
return $resultado;
}
function decoBmd3($pasar, $cantidad){
$resultado = '';
for($i=0;$i<$cantidad;$i++){
$tipo = ($i) % 3;
$valor =ord($pasar[$i]);
$res_aux = decoBmd($tipo, $valor);
// if($res_aux!=255)
$resultado .= chr($res_aux);
}
return $resultado;
}
function decoWtf($pasar, $cantidad){
$resultado = '';
for($i=0;$i<$cantidad;$i++){
$valor =ord($pasar[$i]);
$valor = $valor ^ 202;
$resultado .= chr($valor);
}
return $resultado;
}
function encoBmd2($modo, $cambio, $inicio, $cantidad, $arrastre){
if($modo == 1)
if($cambio==-1){
($cantidad==1) ? ($cambio = 255) : ($cambio = 4294967295);
}
for($i=0;$i<$cantidad;$i++){
if($modo == 0)
$resultado[$i] = decoBmd(($inicio + $i + $arrastre) % 3, ord($cambio[$i]));
else{
$resultado[$i] = decoBmd(($inicio + $i + $arrastre) % 3, calModulo($cambio));
$cambio = intval($cambio/256);
}
}
return $resultado;
}
function encoBmd3($cambio, $inicio, $arrastre){
for($i=0;$i<strlen($cambio);$i++)
$resultado .= chr(decoBmd(($inicio + $i + $arrastre) % 3, ord($cambio[$i])));
return $resultado;
}
function pasarHex($numero, $cantidad){
for($i=0;$i<$cantidad;$i++){
$a = $numero % 256;
$numero = intval($numero/256);
$resultado .= chr($a);
}
return $resultado;
}
function cantidad( $contenido, $inicio, $cantidad){
$resultado = '';
for($i=0;$i<$cantidad;$i++){
$valor =ord(substr($contenido, $inicio + $i, 1));
$resultado += $valor*pow( 256, $i);
}
return $resultado;
}
function neg_simple($modo, $valor, $cantidad){
if($modo == 1)
($valor == 255 && $cantidad == 1 || $valor == 65535 && $cantidad == 2) ? ($resultado= -1) :($resultado = $valor);
else
$resultado = str_replace("Ñ", "", $valor);
return $resultado;
}
function calModulo($valor){
$resultado = $valor % 256;
if($resultado<0)
$resultado += 256;
return $resultado;
}
function xlsBOF() {
return pack("vvvvvv", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
}
function xlsEOF() {
return pack("ss", 0x0A, 0x00);
}
function xlsWriteNumber($Row, $Col, $Value) {
$a = pack("sssss", 0x203, 14, $Row, $Col, 0x0);
$a .= pack("d", $Value);
return $a;
}
function xlsWriteLabel($Row, $Col, $Value ) {
$L = strlen($Value);
$a = pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
$a .= $Value;
return $a;
}
function convXLS($tipo, $Value, $Row, $Col){
($tipo == 1) ? $a = xlsWriteNumber($Row, $Col, $Value) : ($a = xlsWriteLabel($Row, $Col, $Value ));
return $a;
}
function deco_gmu($archivo){
global $path_oz;
global $path_graf;
$nombre = explode(".", $archivo);
$size = (sizeof($nombre)-1);
$ext = strtolower($nombre[$size]);
switch ($ext) {
case "ozb":
$sacar = 4;
$formato = "bmp";
break;
case "ozj":
$sacar = 24;
$formato = "jpg";
break;
case "ozt":
$sacar = 4;
$formato = "tga";
break;
default:
break;
}
if(isset($sacar)){
$contenido = abrir($path_oz.$archivo);
$contenido = substr($contenido, $sacar, strlen($contenido)-$sacar);
$fp = fopen($path_graf.$nombre[0].".".$formato,"w+");
fwrite($fp, $contenido);
fclose($fp);
}
}
function enco_gmu($archivo){
global $path_oz;
global $path_graf;
$nombre = explode(".", $archivo);
$size = (sizeof($nombre)-1);
$ext = strtolower($nombre[$size]);
switch ($ext) {
case "bmp":
$poner = 4;
$formato = "ozb";
break;
case "jpg":
$poner = 24;
$formato = "ozj";
break;
case "tga":
$poner = 4;
$formato = "ozt";
break;
default:
break;
}
if(isset($poner)){
$contenido = abrir($path_graf.$archivo);
$poner_temp = substr($contenido, 0, $poner);
$contenido = $poner_temp.$contenido;
$fp = fopen($path_oz.$nombre[0].".".$formato,"w+");
fwrite($fp, $contenido);
fclose($fp);
}
}
function version_file($archivo, $file){
($archivo==message) ? ($patha="../archivos/wtf/") : ($patha="../archivos/bmd/");
$largo = filesize($patha.$file);
switch ($archivo) {
case "gate":
switch ($largo) {
case 6144:
return "gate";
break;
case 2304:
return "gate2";
break;
case 900:
return "gate2";
break;
default:
return "gate";
break;
}
break;
case "item":
switch ($largo) {
case 38916:
return "item2";
break;
case 688132:
return "item";
break;
default:
return "item";
break;
}
break;
case "itemsetoption":
switch ($largo) {
case 4868:
return "itemsetoption2";
break;
case 6980:
return "itemsetoption";
break;
default:
return "itemsetoption";
break;
}
break;
case "itemsettype":
switch ($largo) {
case 2052:
return "itemsettype2";
break;
case 32772:
return "itemsettype";
break;
default:
return "itemsettype";
break;
}
break;
case "message":
switch ($largo) {
case 1444:
return "message";
break;
default:
return "message";
break;
}
break;
case "MonsterSkill":
switch ($largo) {
case 1444:
return "MonsterSkill";
break;
case 452:
return "MonsterSkill2";
break;
case 228:
return "MonsterSkill2";
break;
default:
return "MonsterSkill";
break;
}
break;
case "movereq":
switch ($largo) {
case 4004:
return "movereq";
break;
case 2884:
return "movereq";
break;
default:
return "movereq";
break;
}
break;
case "quest":
switch ($largo) {
case 116800:
return "questa";
break;
case 136000:
return "questb";
break;
case 142400:
return "quest";
break;
default:
return "quest";
break;
}
break;
case "quest2":
switch ($largo) {
case 116800:
return "quest2a";
break;
case 136000:
return "quest2b";
break;
case 142400:
return "quest2";
break;
default:
return "quest2";
break;
}
break;
case "quest3":
switch ($largo) {
case 116800:
return "quest3a";
break;
case 136000:
return "quest3b";
break;
case 142400:
return "quest3";
break;
default:
return "quest3";
break;
}
break;
case "skill":
switch ($largo) {
case 48004:
return "skill";
break;
case 13316:
return "skill2";
break;
case 15364:
return "skill3";
break;
case 27204:
return "skill4";
break;
case 2564:
return "skill5";
break;
default:
return "skill";
break;
}
break;
case "text":
switch ($largo) {
case 299925:
return "text2";
break;
default:
return "text";
break;
}
break;
default:
return $archivo;
break;
}
}
function CrcCalc($buffer, $CheckVal, $salteo)
{
$CrcKey = $CheckVal * 512;
$tmpbuff = 0;
$var_temp = array(0xFFFFFFFF, 0x7FFFFFFF, 0x3FFFFFFF, 0x1FFFFFFF, 0x0FFFFFFF, 0x07FFFFFF, 0x03FFFFFF, 0x01FFFFFF, 0x00FFFFFF);
if($salteo>0) $buffer = substr($buffer, 4);
$size = strlen($buffer);
for( $i = 0 ; $i <= ($size-8); $i+=4){
$tmpbuff = cantidad($buffer, $i, 4);
((($i / 4) + $CheckVal) % 2) ? ($CrcKey += $tmpbuff) : ($CrcKey ^= $tmpbuff);
if(($i % 16) == 0) $CrcKey ^= ($CheckVal + $CrcKey) >> ((($i /4) % 8) + 1) & $var_temp[(($i /4) % 8) + 1];
}
return $CrcKey;
}
function ver_crc($archivo, $buffer){
$salteo = 0;
switch ($archivo) {
case "BuffEffect":
$CheckVal = 0xE2F1;
$salteo = 4;
break;
case "Filter":
$CheckVal = 0x3E7D;
break;
case "FilterName":
$CheckVal = 0x2BC1;
break;
case "item":
$CheckVal = 0xE2F1;
break;
case "itemsetoption":
$CheckVal = 0xA2F1;
break;
case "itemsettype":
$CheckVal = 0xE5F1;
break;
case "shopcategoryitems":
$CheckVal = 0xE2F1;
break;
case "shopui":
$CheckVal = 0xE2F1;
break;
case "skill":
$CheckVal = 0x5A18;
break;
default:
$CheckVal = 0;
break;
}
if($CheckVal>0){
$valor = CrcCalc($buffer,$CheckVal, $salteo);
$datos = "";
for($i=0;$i<4;$i++){
$datos .= chr(calModulo($valor));
$valor = ($valor) >> (8);
}
return $datos;
}
else
return "no";
}
?>
{code}
Thank you!
Edited by: Ronaldo DeVinche on Nov 27, 2009 6:23 AM
Edited by: Ronaldo DeVinche on Nov 27, 2009 6:24 AM