Foros del Web » Programando para Internet » PHP »

SendPackets solo envia 1 funcion a la vez...

Estas en el tema de SendPackets solo envia 1 funcion a la vez... en el foro de PHP en Foros del Web. Buenas, estoy teniendo una pequeña dificultad con el envio de paquetes.. mi código es el siguiente: Código PHP: <?php  $char_id  =  1 ; $item_id  =  ...
  #1 (permalink)  
Antiguo 26/03/2013, 10:24
 
Fecha de Ingreso: julio-2009
Mensajes: 121
Antigüedad: 17 años, 2 meses
Puntos: 1
SendPackets solo envia 1 funcion a la vez...

Buenas, estoy teniendo una pequeña dificultad con el envio de paquetes..

mi código es el siguiente:

Código PHP:
<?php 

$char_id 
= 1;
$item_id = 15;
$item_ammount = 10;
$item_enchant = 0;
$admin = "Sk0rPi0n";

printf($char_id, $admin, KickCharacterPacket($char_id, $admin) == "x1" ? "KICKEADO" : "KICK_ERROR"); // kickea el Personaje ingame

printf($char_id, $item_id, $item_ammount, $item_enchant, $admin, AddItem2Packet($char_id, $item_id, $item_ammount, $item_enchant, $admin) == "x1" ? "GIVE_OK" : "ERROR_GIVE"); //Envia un packete que entrega X item

function tounicode($string) { 
    
$rs = ""; for($i = 0; $i < strlen($string); $i++) $rs .= $string[$i].chr(0); 
    return(
$rs.chr(0).chr(0)); 
} 


function 
KickCharacterPacket($char_id, $admin) { 
    
$fp = fsockopen("127.0.0.1", "2012", $errno, $errstr, 5); $rs = "x"; 
    if (!
$fp) die("<script>alert('Error connecting to cached: $errstr 
[server down??]')</script>"
); 

    
$buf = pack("c", 5); // 4 = ChangeCharacterNamePacket(); 
    
$buf .= pack("i", $char_id); //char_id 
    
$buf .= tounicode($admin); //new char name 

    
fwrite($fp, pack("s", (strlen($buf)+2)).$buf); 
    
$len = unpack("v", fread($fp, 2)); $rid = unpack("c", fread($fp, 1)); 
    for (
$i = 0; $i < (($len[1]-4) / 4); $i++) { $read = unpack("i", fread($fp, 4)); $rs .= $read[1]; } 
    
fclose($fp); return($rs); 
} 

function 
AddItem2Packet($char_id, $item_id, $item_ammount, $item_enchant, $admin) { 
    
$fp = fsockopen("127.0.0.1", "2012", $errno, $errstr, 5); $rs = "x"; 
    if (!
$fp) die("<script>alert('Error connecting to cached: $errstr 
[server down??]')</script>"
); 
    
$buf=pack("cVVVVVVVVVV",55,$char_id,0,$item_id,$item_ammount,$item_enchant,0,0,0,0,1).tounicode("$admin"); 

    
fwrite($fp, pack("s", (strlen($buf)+2)).$buf); 
    
$len = unpack("v", fread($fp, 2)); $rid = unpack("c", fread($fp, 1)); 
    for (
$i = 0; $i < (($len[1]-4) / 4); $i++) { $read = unpack("i", fread($fp, 4)); $rs .= $read[1]; } 
    
fclose($fp); return($rs); 
} 

?>
El problema es el siguiente, se ejecutan las 2 acciones al mismo tiempo... yo lo que necesitaria es que.. primero se ejecute la funcion KickCharacterPacket y cuando este lista... se ejecute luego AddItem2Packet...
Funcionan ambas tal cual estan... pero solo funciona 1 a la vez... osea si el Personaje esta logeado... lo kickea... si esta offline... le da el item... :/

Tambien puedo chequear primero si esta o no online...

Código PHP:
printf("The character %s is %s\n", $char_id, CheckCharacterPacket($char_id) == "x1" ? "online" : "offline"); 

function 
CheckCharacterPacket($p0) { 
    
$fp = fsockopen("127.0.0.1", "2012", $errno, $errstr, 5); $rs = "x"; 
    if (!
$fp) die("<script>alert('Error connecting to cached: $errstr 
[server down??]')</script>"
); 

    
$buf = pack("c", 1); // 1 = CheckCharacterPacket(); 
    
$buf .= pack("i", $p0); //char_id 

    
fwrite($fp, pack("s", (strlen($buf)+2)).$buf); 
    
$len = unpack("v", fread($fp, 2)); $rid = unpack("c", fread($fp, 1)); 
    for (
$i = 0; $i < (($len[1]-4) / 4); $i++) { $read = unpack("i", fread($fp, 4)); $rs .= $read[1]; } 
    
fclose($fp); return($rs); 
} 
El tema es que no se como hacer para que se ejecute automaticamente :/ ya he intentado varios metodos pero siempre funciona igual si la cuenta esta off... da el item... y si esta online, pues la kickea y no da el item :@...

Alguna idea :/?

Etiquetas: envia, funcion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:02.