Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[v1.3] Statue and Paladin v1
#1
Below I will post a script to add the statue and paladin on your server.

create the file game_snob.tpl in the folder temnplates and insert the code:
PHP Code:
<table>
    <
tr>
        <
td><img src="../graphic/big_buildings/statue1.png" title="Estatua" alt="" /></td>
        <
td>
            <
h2>Statue ({$village.statue|stage})
            </
h2>
            
Locuitorii satului aduc la statuie omagii PaladinuluiDaca Paladinul cade in luptaaici ai posibilitatea sa numesti un soldat ca nou Paladin.
        </
td>
    </
tr>
</
table><br />
{
php}
    include(
"include/configs/unit_knight_config.php");

    
// nivel statuie
    
$statue $this->_tpl_vars['village']['statue'];
    if(
$statue != '0'){
        
$time $time 60 1;
        
$time_s time() + $time;

        
// aflam resursele din sat
        
$village_wood $this->_tpl_vars['village']['r_wood'];
        
$village_stone $this->_tpl_vars['village']['r_stone'];
        
$village_iron $this->_tpl_vars['village']['r_iron'];

        
// aflam id-ul userului
        
$userid $this->_tpl_vars['user']['id'];

        
// codul de securitate
        
$hkey $this->_tpl_vars['hkey'];

        
// pe ce sat este folosind metoda GET
        
$vill $_GET['village'];

        
// selectam date user
        
$user mysql_fetch_array(mysql_query("SELECT `knight`,`knight_name`,`knight_village_recruit`,`knight_village` FROM `users` WHERE `id` = '".$userid."'"));

        if(
$user['knight_village'] > 0){
            
$numar_paladini mysql_fetch_assoc(mysql_query("SELECT `all_unit_knight` FROM `villages` WHERE `id` = '".$user['knight_village']."'"));
        }

        
// verificam daca se recruteaza vreun paladin
        
$recruit mysql_num_rows(mysql_query("SELECT * FROM `recruit` WHERE `villageid` = '".$user['knight_village_recruit']."' AND `unit` = 'unit_knight'"));
        if(!
$recruit){
            
mysql_query("UPDATE `users` SET `knight` = '".$numar_paladini['all_unit_knight']."' WHERE `id` = '".$userid."'");
        }
        
$user mysql_fetch_array(mysql_query("SELECT `knight`,`knight_name`,`knight_village_recruit`,`knight_village` FROM `users` WHERE `id` = '".$userid."'"));

        
// anulam comanda
        
if($_GET['do'] == 'drep' && $_GET['hkey'] == $hkey){
            
mysql_query("UPDATE `users` SET `knight` = '0' WHERE `id` = '".$userid."'");
            
mysql_query("DELETE FROM `events` WHERE `event_id` = '".$_GET['id']."'");
            
$recruit_f1 mysql_fetch_array(mysql_query("SELECT `villageid` FROM `recruit` WHERE `id` = '".$_GET['id']."'"));
            
mysql_query("UPDATE `villages` SET `r_bh` = `r_bh` - '".$farms."' WHERE `id` = '".$recruit_f1['villageid']."'") or die (mysql_error());
            
mysql_query("DELETE FROM recruit WHERE id = '".$_GET['id']."'");
            
header("Location: game.php?village=$vill&screen=statue");
        }

        
// daca recrutam paladinul
        
if($_GET['recruit'] == 'paladin'){
            if(
$user['knight'] >= '1'){
                
$error 'Vo&ecirc; j&aacute; possui um paladino.'
            }else{
                
mysql_query("UPDATE `villages` SET `r_wood` = `r_wood` - '".$wood."' WHERE `id` = '".$_GET['village']."'") or die (mysql_error());
                
mysql_query("UPDATE `villages` SET `r_stone` = `r_stone` - '".$stone."' WHERE `id` = '".$_GET['village']."'");
                
mysql_query("UPDATE `villages` SET `r_iron` = `r_iron` - '".$iron."' WHERE id = '".$_GET['village']."'");
                
mysql_query("UPDATE `villages` SET `r_bh` = `r_bh` + '".$farms."' WHERE id = '".$_GET['village']."'");
                
mysql_query("INSERT INTO `recruit` (`unit`,`num_unit`,`num_finished`,`time_finished`,`time_start`,`time_per_unit`,`building`,`villageid`) VALUES ('".$unit."','1','0','".$time_s."','".time()."','".$time."','statue','".$_GET['village']."')") or die (mysql_error());
                
$select mysql_query("SELECT * FROM `recruit` WHERE `unit` = 'unit_knight' AND `villageid` = '".$_GET['village']."' ORDER BY id DESC") or die (mysql_error());
                
$num mysql_num_rows($select);
                if(
$num 0){
                    
$array mysql_fetch_array($select);
                    
mysql_query("INSERT INTO events (`event_time`,`event_type`,`event_id`,`user_id`,`villageid`) VALUES ('".time()."','recruit','".$array['id']."','".$userid."','".$_GET['village']."')") or die (mysql_error());
                }
                
mysql_query("UPDATE `users` SET `knight` = '1' WHERE `id` = '".$userid."'");
                
mysql_query("UPDATE `users` SET `knight_village_recruit` = '".$_GET['village']."' WHERE `id` = '".$userid."'");
                
mysql_query("UPDATE `users` SET `knight_village` = '".$_GET['village']."' WHERE `id` = '".$userid."'");
                
$vill $_GET['village'];
                
header("Location: game.php?village=$vill&screen=statue");
            }
        }
        
$num mysql_num_rows(mysql_query("SELECT * FROM `recruit` WHERE `villageid` = '".$vill."' AND building = 'statue'"));
        if(
$num 0){
{/
php}
<
table class="vis">
    <
tr>
        <
th width="150">Comando</th>
        <
th width="120">Dura&ccedil;&atilde;o</th>
        <
th width="150">Termino</th>
        <
th width="100">Cancelar *</th>
    </
tr>
{
php}
            
$vil $_GET['village'];
            
$o1 mysql_query("SELECT id FROM villages WHERE userid = '".$userid."'") or die (mysql_error());
            while (
$array02 mysql_fetch_array($o1)){
                
$query03 mysql_fetch_array(mysql_query("SELECT * FROM recruit WHERE villageid = '".$vill."' AND building = 'statue'"));
                if(
$array02['id'] == $query03['villageid']){
                echo 
'<tr class="lit"><td><img src="../graphic/unit/unit_knight.png" />'.stripslashes(urldecode($user['knight_name'])).'</td><td align="center"><span class="timer">'.format_time($query03['time_finished']-time()+1).'</span></td><td align="center">'.date("d.m.y H:i"$query03['time_finished']).'</td><td><a href="game.php?village='.$vil.'&screen=statue&do=drep&id='.$query03['id'].'&hkey='.$hkey.'">cancelar</a></td></tr>';
            }
        }
{/
php}
</
table><br />
{
php}
    }
    if(!empty(
$error)){
{/
php}
<
div class="error">{php} echo $error; {/php}</div>
{
php}
    }
{/
php}
<
table class="vis" width="100%">
    <
tr><th width="130">Unidade</th>        <th width="40"><center><img src="../graphic/holz.png"></center></th>
        <
th width="40"><center><img src="../graphic/lehm.png"></center></th>
        <
th width="40"><center><img src="../graphic/eisen.png"></center></th>
        <
th width="40"><center><img src="../graphic/face.png"></center></th><th>Dura&ccedil;&atilde;o</th><th>Recrutar</th><th width="240">Localidade</th></tr>
    <
tr>
        <
td width="250"><a href="javascript:popup('popup_unit.php?unit={php} echo $unit; {/php}', 520, 520)"> <img src="../graphic/unit/{php} echo $unit; {/php}.png" alt="" />{php} echo stripslashes(urldecode($user['knight_name'])); {/php}</a></td>
        <
td align="center">{php}echo $wood;{/php}</td
        <
td align="center">{php}echo $stone;{/php}</td
        <
td align="center">{php}echo $iron;{/php}</td
        <
td align="center">{php}echo $farms;{/php}</td>
        <
td align="center">{php}echo format_time($time+1);{/php}</td>
{
php}
    include(
"include/config.php");
    include(
"include/configs/farm_limits.php");
    
$wood_re $this->_tpl_vars['village']['r_wood'];
    
$stone_re $this->_tpl_vars['village']['r_stone'];
    
$iron_re $this->_tpl_vars['village']['r_iron'];
    
$farms_re $this->_tpl_vars['village']['r_bh'];
    
$farms_lvl $this->_tpl_vars['village']['farm'];
    if(
$wood_re $wood || $stone_re $stone || $iron_re $iron){
        
$error '<td class="inactive" align="center">Recursos insuficientes.</td>';
    }
    if(
$user['knight'] >= '1'){
        
$error '<td class="inactive" align="center">S&oacute; &eacute; permitido 1 paladino por jogador.</td>';
    }
    if(
$farms_re $farms >= $arr_farm[$farms_lvl]){
        
$error '<td class="inactive" align="center">A fazenda n&atilde;o pode prover mais unidades.</td>';
    }
    if(!empty(
$error)){
        echo 
$error;
    }else{
{/
php}
        <
td align="center"><a href="game.php?village={$village.id}&screen=statue&recruit=paladin">Nomear paladino</a></td>
{
php}
    }
{/
php}
        <
td align="center">
        {
php
        
$knight_loc mysql_fetch_assoc(mysql_query("SELECT * FROM `villages` WHERE `id` = '".$user['knight_village']."'"));
        
        if (
$knight_loc['all_unit_knight'] > 0) { echo '<a href="game.php?village='.$knight_loc[id].'&screen=overview">'.stripslashes(urldecode($knight_loc['name'])).' ('.$knight_loc['x'].'|'.$knight_loc['y'].') K'.$knight_loc['continent'].'</a>'; } else { echo '<center><b>---</b></center>'; } {/php}</td>
    </
tr>
    </
table>
    
{
php}


    if (
$_GET['do'] == 'change'){
     if (
strlen(trim($_POST['knight_name'])) < || strlen(trim($_POST['knight_name'])) > 32 ) { $error_1 'O nome do paladino deve ter entre 3 e 32 caracteres!'; } else
     {
      
mysql_query("UPDATE users SET knight_name = '".urlencode($_POST['knight_name'])."' WHERE id = '".$userid."'");
      
header("Location: game.php?village=$vill&screen=statue");
      exit;
     }
     
     }
    {/
php}{php} if ($error_1){ {/php}
    <
span class="error">{php} echo $error_1; {/php}</span>
    {
php} } {/php}
    <
br />
    <
form action="game.php?village={$village.id}&screen=statue&do=change" method="POST">
    <
table class="vis">
        <
tr><th>Nome</th><td><input type="text" name="knight_name" value="{php} echo stripslashes(urldecode($user['knight_name'])); {/php}" /><input type="submit" value="Ok" /></td></tr>
    </
table>
    </
form>
    {
php}}{/php

go to the folder include/config and create the file unit_knight_config.php. Insert in the file:
PHP Code:
<?
    $unit = 'unit_knight'; //unit
    $farms = 10; //farm used
    $wood = 20; //wood cust
    $stone = 20; //stone cust
    $iron = 40; //iron cust
    $time = 5; //time in minutes for create the unit
?>

Add in templates/game.tpl:
PHP Code:
{php}$this->_tpl_vars['allow_screens'][] = "statue";{/php

Add in include/configs/units.php
PHP Code:
$cl_units->add_unit("Paladin","unit_knight");
$cl_units->set_woodprice("20");
$cl_units->set_stoneprice("20");
$cl_units->set_ironprice("40");
$cl_units->set_bhprice("10");
$cl_units->set_time("600");
$cl_units->set_att("150","1.045");
$cl_units->set_def("250","1.045");
$cl_units->set_defcav("400","1.045");
$cl_units->set_defarcher("150","1.045");
$cl_units->set_speed("800");
$cl_units->set_booty("600");
$cl_units->set_needed(array("statue"=>1));
$cl_units->set_recruit_in("statue");
$cl_units->set_specials(array("no_investigate"));
$cl_units->set_group("cav");
$cl_units->set_col("D");
$cl_units->set_attType("undefined");
$cl_units->set_description(""); 

And add in include/configs/buildings.php:
PHP Code:
$cl_builds->add_build("Statue","statue");
$cl_builds->set_woodprice("220","1.2");
$cl_builds->set_stoneprice("220","1.2");
$cl_builds->set_ironprice("220","1.2");
$cl_builds->set_bhprice("0","1.17");
$cl_builds->set_time("2000","1.2");
$cl_builds->set_points("0","1.2");
$cl_builds->set_needbuilds(array());
$cl_builds->set_maxstage("1");
$cl_builds->set_specials(array());
$cl_builds->set_description(""); 

SQL CODE:
PHP Code:
ALTER TABLE `usersADD `knightINT11 NOT NULL DEFAULT '0',
ADD `knight_nameVARCHAR200 NOT NULL DEFAULT 'Paladin',
ADD `knight_villageINT11 NOT NULL DEFAULT '0',
ADD `knight_village_recruitINT11 NOT NULL DEFAULT '0';
ALTER TABLE `villagesADD `statueINT11 NOT NULL DEFAULT '0' 
Reply
#2
Code:
ALTER TABLE `users` ADD `knight` INT( 11 ) NOT NULL DEFAULT '0',
ADD `knight_name` VARCHAR( 200 ) NOT NULL ,
ADD `knight_village` INT( 11 ) NOT NULL DEFAULT '0',
ADD `knight_village_recruit` INT( 11 ) NOT NULL DEFAULT '0';
ALTER TABLE `villages` ADD `statue` INT( 11 ) NOT NULL DEFAULT '0'

DAMN !? Why users ?
Reply
#3
I did not understand your question
Reply
#4
why
PHP Code:
ALTER TABLE `usersADD `knightINT11 NOT NULL DEFAULT '0'
?
Schildkröte: "nichts ist langsamer als ich!"
Schnecke: "ich bin ganz sicher langsamer!"
Und dann kam der Internet Explorer...
Reply
#5
for count the paladin
Reply
#6
Why storing it, when you can select SUM(unit_paladin) from unit_place and checking if it isn't on it's way to another village.

Remember, the smart coding consists in storing less info in the database. But then comes the performance part,so you need to equilibrate these two factors.

Though, checking if the paladin exists after storing it in the databse, is quite nasty because the "bad coded" twlan script will ... your script up after some attacks with your paladin.
Reply
#7
I think like this it's impossible to attack with the paladin, right?
Reply




Users browsing this thread: 1 Guest(s)