de ettelcar le 28 Juin 2006, 08:50
Attention vos yeux, voici le code de la magie associée au livre de sort.
Elle ne peut être utilisée qu'avec un objet qui, une fois qu'on se l'est approprié, permet d'apprendre les sorts dispo grâce aux objets.
L'effet détaillé:
La magie permet de s'approprier le livre de sort: cela crée un nouvel objet : livre de sort de <pseudo> et une nouvelle magie qui permet à <pseudo> seul d'apprendre tous les sorts de ses objets (sauf consommables) pour ne plus avoir beson des items. Si quelqu'un d'autre tente d'apprendre les sorts avec le livre de <pseudo>, il perd toute sa mana.
Cette magie est particulièrement délicate, puisqu'elle créera à volonté d'autres magies et objets. Attention donc si vous rajoutez d'autres magies ou objets après, à bien utiliser l'administration ou à faire attention aux id.
Remplacez la première ligne pour l'id voulue pour votre objet.
- Code: Tout sélectionner
$id_livre = 53;/*id de l'objet livre de sorts qui contient cette magie.*/
foreach( $cible as $victime) {
/*on ne va pas chercher de merdes avec les immunos et tout le bordel. Le rapport n'est mis à jour que chez le proprio*/
/*rechercher le livre dans l'inventaire*/
$items = explode("°", str_replace("&","",$ettel_user['items']));
$items = array_diff($items,array ("0",""));
if(! in_array($id_livre,$items))
{
$messageaffich = 'Vous ne possédez pas le livre de sorts!';
}
else
{
/*créer la magie d'apprentissage*/
$sql = "INSERT INTO `ettel_competences` ( `comp_name` , `type` , `ct_mana` , `jet_dext` , `nombre_cibles` , `self_only` , `arena_only` , `code_immuno` , `precode` , `code` )
VALUES ('apprendre tous les sorts conférés par les objets pour 50 MP', 'magenchant', '50', 'non', '1', 'oui', 'oui', '', '', 'foreach( \$cible as \$victime) {
\$sql = \"select * from ettel_users WHERE `ettel_id` = \'\" . \$victime . \"\'\";
if ( !(\$vict = \$db->sql_query(\$sql)) ) {
message_die(GENERAL_MESSAGE, \'Fatal Error: \'.mysql_error());
}
\$vict = mysql_fetch_array(\$vict);
if ( \$vict[\'ettel_id\'] == \'" . $ettel_user['ettel_id'] . "\') {
\$magies_dispo=array();
\$temp = explode(\"°\", str_replace(\"&\",\"\",\$vict[\'user_comp\']));
foreach(\$temp as \$comp_id)
{
if(!in_array(\$comp_id,\$magies_dispo)) \$magies_dispo[]=\$comp_id;
}
\$items = explode(\"°\", str_replace(\"&\",\"\",\$vict[\'items\']));
\$items = array_diff(\$items,array (\"0\",\"\"));
foreach(\$items as \$itemid) {
\$sql = \"SELECT magies_objet FROM `ettel_shop` WHERE item_id = \'\" . \$itemid . \"\' AND effet_objet=\'non\' \";
if ( !(\$result = \$db->sql_query(\$sql)) )
{
message_die(GENERAL_MESSAGE, \'Fatal Error: \'.mysql_error());
}
if( \$itemid!=" . $id_livre . " && \$ettel_item = mysql_fetch_array(\$result) )
{
\$temp = explode(\"°\", str_replace(\"&\",\"\",\$ettel_item[\'magies_objet\']));
foreach(\$temp as \$comp_id)
{
if(!in_array(\$comp_id,\$magies_dispo) && \$comp_id!= \$mag[\'comp_id\'] && \$comp_id > 0)
\$magies_dispo[]=\$comp_id;
}
}
}
\$magies_dispo = array_diff(\$magies_dispo,array (\"0\",\"\"));
\$nvmag = \'\';
foreach(\$magies_dispo as \$mag) {
\$nvmag.=\'&\'.\$mag.\'°\';
}
\$rapport .= \"<p> Vous apprenez tous les sorts que vous confèrent vos objets non consommables. Vous n’avez plus besoin de ceux-ci pour manipuler ces sorts. </p>\";
\$sql1 = \"UPDATE `ettel_users` SET `user_comp` = \'\" . \$nvmag . \"\' WHERE `ettel_id` = \'\" . \$vict[\'ettel_id\'] . \"\' ;\";
\$sql2 = \"UPDATE `ettel_combats` SET `historique` = RIGHT(CONCAT(historique , \'\".\$rapport.\"\' ) , 10000 ) WHERE `ettel_id` = \'\" . \$vict[\'ettel_id\'] . \"\';\";
\$sql3 = \"INSERT INTO `ettel_historique` ( `date` , `evenement` ) VALUES (NOW( ) , \'\".\$ettel_user[\'ettel_name\'].\" n° \".\$ettel_user[\'ettel_id\'].\" dirigé par n°\".\$userdata[\'user_id\'].\" apprend tous les sorts de ses objets, l’amenant à connaître \".\$nvmag.\" . \');\";
if ( !(\$result1 = \$db->sql_query(\$sql1) && \$result2 = \$db->sql_query(\$sql2) && \$result3 = \$db->sql_query(\$sql3)) ) {
message_die(GENERAL_MESSAGE, \'Fatal Error: coup non pris en compte \'.mysql_error());
}
\$messageaffich .= \$rapport;
}
else {
\$rapport .= \"<p> Le livre ne vous reconnaît pas comme son propriétaire. Il se défend et brûle toute votre mana. </p>\";
\$sql1 = \"UPDATE `ettel_users` SET `mana` = \'0\' WHERE `ettel_id` = \'\" . \$vict[\'ettel_id\'] . \"\' ;\";
\$sql2 = \"UPDATE `ettel_combats` SET `historique` = RIGHT(CONCAT(historique , \'\".\$rapport.\"\' ) , 10000 ) WHERE `ettel_id` = \'\" . \$vict[\'ettel_id\'] . \"\';\";
\$sql3 = \"INSERT INTO `ettel_historique` ( `date` , `evenement` ) VALUES (NOW( ) , \'\".\$ettel_user[\'ettel_name\'].\" n° \".\$ettel_user[\'ettel_id\'].\" dirigé par n°\".\$userdata[\'user_id\'].\" tente d’apprendre avec le livre d’un autre et perd toute sa mana. \');\";
if ( !(\$result1 = \$db->sql_query(\$sql1) && \$result2 = \$db->sql_query(\$sql2) && \$result3 = \$db->sql_query(\$sql3)) ) {
message_die(GENERAL_MESSAGE, \'Fatal Error: coup non pris en compte \'.mysql_error());
}
\$messageaffich .= \$rapport;
}
}')";
if ( !($result = $db->sql_query($sql)) ) {
message_die(GENERAL_MESSAGE, 'Fatal Error: coup non pris en compte '.mysql_error());
}
$sql = "SELECT comp_id FROM `ettel_competences` ORDER BY comp_id DESC";
if ( !($result = $db->sql_query($sql)) ) {
message_die(GENERAL_MESSAGE, 'Fatal Error: coup non pris en compte '.mysql_error());
}
$row = $db->sql_fetchrow();
/*et l'image*/
if( file_exists( $phpbb_root_path . "ettel/design/imagesshop/" . $id_livre . ".gif") )
{
$imurl = $phpbb_root_path . "ettel/design/imagesshop/" . $id_livre . ".gif";$ext=".gif";
}
elseif( file_exists( $phpbb_root_path . "ettel/design/imagesshop/" . $id_livre . ".jpg") )
{
$imurl = $phpbb_root_path . "ettel/design/imagesshop/" . $id_livre . ".jpg";$ext=".jpg";
}
elseif( file_exists( $phpbb_root_path . "ettel/design/imagesshop/" . $id_livre . ".png") )
{
$imurl = $phpbb_root_path . "ettel/design/imagesshop/" . $id_livre . ".png";$ext=".png";
}
else
{
$imurl = $phpbb_root_path . "ettel/design/imagesshop/0.gif";$ext=".gif";
}
copy($imurl,$phpbb_root_path . "ettel/design/imagescomp/".$row['comp_id'].$ext);
/*créer le livre de $ettel_user['ettel_name']*/
$sql = "INSERT INTO `ettel_shop` ( `nom_objet` , `nom_boutique` , `description_objet` , `type_port` , `effet_objet` , `puissance` , `magies_objet` , `distance` , `bonus_initiative` , `bonus_force` , `bonus_endurance` , `bonus_dexterite` , `bonus_viemax` , `bonus_manamax` , `prix_objet` , `nb_stock` , `restock_time` , `last_restock` )
VALUES ('Livre de sorts de ".$ettel_user['ettel_name']."', 'Livres de sorts appropriés', 'permet à son propriétaire d’apprendre des sorts', 'sac', 'non', '0', '".$row['comp_id']."', 'non', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0000-00-00 00:00:00')";
if ( !($result = $db->sql_query($sql)) ) {
message_die(GENERAL_MESSAGE, 'Fatal Error: coup non pris en compte '.mysql_error());
}
$sql = "SELECT item_id FROM `ettel_shop` ORDER BY item_id DESC";
if ( !($result = $db->sql_query($sql)) ) {
message_die(GENERAL_MESSAGE, 'Fatal Error: coup non pris en compte '.mysql_error());
}
$row = $db->sql_fetchrow();
/*et l'image*/
copy($imurl,$phpbb_root_path . "ettel/design/imagesshop/".$row['item_id'].$ext);
/*remplacer le livre dans l'inventaire*/
$nborig = substr_count($ettel_user['items'], "&" . $id_livre . "°");
$newitems = str_replace("&" . $id_livre . "°", "", $ettel_user['items']);
for ($poh =1; $poh < $nborig; $poh++)
{
$newitems .= "&" . $id_livre . "°";
}
$newitems.= "&". $row['item_id'] . "°";
$sql1 = "UPDATE `ettel_users` SET `items` = '" . $newitems . "' WHERE `ettel_id` = '" . $ettel_user['ettel_id'] . "' ;";
$sql2 = "INSERT INTO `ettel_historique` ( `date` , `evenement` ) VALUES (NOW( ) , 'L\'utilisateur " . $ettel_user['ettel_name'] . " n°" . $ettel_user['ettel_id'] . " dirigé par n°".$userdata['user_id']." s’approprie le livre objet n°" . $id_livre . " qui devient n° " . $row['item_id'] . ", ce qui l\'amène à posséder les items " . $newitems . " . ');";
$rapport .= "<p> Vous vous appropriez le livre de sort. Cet objet vous permet désormais et à vous seul d’apprendre des sorts. </p>";
$sql3 = "UPDATE `ettel_combats` SET `historique` = RIGHT(CONCAT(historique , '".$rapport."' ) , 10000 ) WHERE `ettel_id` = '" . $ettel_user['ettel_id'] . "';";
if ( !($result1 = $db->sql_query($sql1) && $result2 = $db->sql_query($sql2) && $result3 = $db->sql_query($sql3)) ) {
message_die(GENERAL_MESSAGE, 'Fatal Error: coup non pris en compte '.mysql_error());
}
$messageaffich .= $rapport;
}
}
EDIT: corrigée le 13/07/06
Dernière édition par
ettelcar le 13 Juil 2006, 14:19, édité 1 fois.
Maintenant, si vous écoutez ma voix et gardez mon alliance, je vous tiendrai pour mon bien propre parmi tous les peuples, car toute la terre est à moi. Je vous tiendrai pour un royaume de prêtres, une nation sainte.