PHP Coding
 
Forums: » Register « |  User CP |  Games |  Calendar |  Members |  FAQs |  Sitemap |  Support | 
User Name:
Password:
Remember me
Go Back   Codewalkers ForumsPHP RelatedPHP Coding

Reply
Add This Thread To:
  Del.icio.us   Digg   Google   Spurl   Blink   Furl   Simpy   Y! MyWeb 
Thread Tools Search this Thread Rate Thread Display Modes
 
Unread Codewalkers Forums Sponsor:
AT&T devCentral & BlackBerry(r) Webcast Series: BlackBerry and GPS -Build Location Awareness into your BlackBerry Applications, July 10th-1:00PM EST. Register Today!
  #1  
Old May 1st, 2008, 12:36 PM
Sid Sid is offline
Registered User
Codewalkers Newbie (0 - 499 posts)
 
Join Date: May 2008
Posts: 4 Sid User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 28 m 42 sec
Reputation Power: 0
Attack script help and one other thing

Ok just so you know this script im looking at is a clone of a popular game. For the past few weeks i have been trying to figure out a few problems but with me being new to everything and trying to run before i can walk its going horribly slow!

Ok here is what i have, i have put the game onto a local host and then tried the attack script now the way it should work is that the attack should be upto the users attack strength and a little below (random but not too random) the problem is its far too random, ive even had hits for -4bil (testing)
Top half dont think this has anything to do with it tho unsure...
PHP Code:
<?
include "vsys.php";
function 
getKilled($count){
    return (
rand(0,100))?1:(($count>1)?1:0);
}
function 
getWeaponStrA($user,$wA,$n,$turns){
    
//$defWeapons=$defWeaponsA[0];
    //$defWeaponsWas=$defWeaponsA[1];
    //    $defWeaponsIs=$defWeaponsA[2];
    //    $defWeaponsCount=$defWeaponsA[3];
    
global $conf;
    for (
$i=0;$i<count($wA);$i++){
        
//echo $wA[$i]->isAtack.";;".$n."<br>";
        //if ($wA[$i]->isAtack==$n)
        
{
            
$Weapons[0].=$wA[$i]->weaponID.";";
            
$Weapons[1].=$wA[$i]->weaponStrength.";";
            
$allWeaponStrength=$conf["race"][$user->race]["weapon"][$wA[$i]->weaponID]["strength"];
            
$weaponDamage=round(rand($allWeaponStrength/200*$turns,($allWeaponStrength/50*$turns<0)?$allWeaponStrength/50*$turns:1));
            
$newWeaponStrength=$wA[$i]->weaponStrength-$weaponDamage;
            if (
$newWeaponStrength<=0){
                
$newWeaponStrength=0;
                
delWeapon($wA[$i]->ID);
            }else{
                
setWeapon($wA[$i]->ID," weaponStrength ='$newWeaponStrength' ");
            }
            
$Weapons[2].=$newWeaponStrength.";";
            
$Weapons[3].=$wA[$i]->weaponCount.";";
        }
    }
    for (
$i=0;$i<4;$i++){
        if (
$Weapons[$i]){$Weapons[$i]=substr($Weapons[$i],0,strlen($Weapons[$i])-1);}
    }
    
    return 
$Weapons;
}
function 
spiedValue($value,$difPerc){
    
$value=(rand(($difPerc-100),$difPerc)>0)?$value:"???";
    return 
$value;
}
if (
$cgi ['defender_id2']||$cgi ['defender_id']){
    if ((
$cgi ['defender_id2']==$_SESSION['isLogined'])||($cgi ['defender_id']==$_SESSION['isLogined'])) {
        
$strErr=" You can not attack or spy yourself. ";
        
$cgi['id']=($cgi ['defender_id2'])?$cgi ['defender_id2']:$cgi ['defender_id'];
        
$cgi ['defender_id2']='';
        
$cgi ['defender_id']='';
    }
}
if (
$cgi ['defender_id2']){
    
$cgi['id']=$cgi ['defender_id2'];
    
    if (
$cgi['attacks']){
//--------------------------Attacking


I believe this is where the error is fixed
PHP Code:
//--------------------------Attacking
        
$fields="atackTurns ,atackStrength, defStrength, gold, phrase,atackUsersKilled,defUsersKilled,atackTraine  d,atackUnTrained,defTrained,defUnTrained,atackWeap  ons,defWeapons,atackWeaponWas,atackWeaponIs,atackW  eaponCount, defWeaponWas, defWeaponIs, defWeaponCount,time";
        
$atacker=getUserDetails($_SESSION['isLogined']);
        if (
$cgi['attacks']>15){$cgi['attacks']=15;}
        if (
$cgi['attacks']<1){$cgi['attacks']=1;}
        if (
$atacker->attackTurns >=$cgi['attacks']){
            
$defender=getUserDetails($cgi['id']); 
            
            
$atackStrength=getStrikeAction($atacker);
            
$atackStrength=rand(round($atackStrength/2),$atackStrength);    
            
            
$defStrength=getDefenseAction($defender);
            
$defStrength=rand(round($defStrength/2),$defStrength);          
            
            
$phrase=$conf["phrase"][rand(90,count($conf["phrase"])-1)];
            
            if (
$atackStrength>$defStrength){
                
$gold=$defender->gold/15;
                
$gold=floor (rand ($gold*$cgi['attacks']/2$gold*$cgi['attacks']));
            }else 
$gold=0;
            
$atackTrained=$atacker->trainedAttackSold +$atacker->trainedAttackMerc;
            
$atackUnTrained=$atacker->untrainedMerc+$atacker->untrainedSold;
            
            
$defTrained=$defender->trainedAttackSold +$defender->trainedAttackMerc;
            
$defUnTrained=$defender->untrainedMerc+$defender->untrainedSold;
            
            
$atackUsersKilledAS=getKilled($atacker->trainedAttackSold);
            
$atackUsersKilledAM=getKilled($atacker->trainedAttackMerc);
            
$atackUsersKilledUM=getKilled($atacker->untrainedMerc);
            
$atackUsersKilledUS=getKilled($atacker->untrainedSold);
            
$atackUsersKilled=$atackUsersKilledAS+$atackUsersK  illedAM+$atackUsersKilledUS+$atackUsersKilledUM;
            
            
$defUsersKilledDS=getKilled($defender->trainedDefSold );
            
$defUsersKilledDM=getKilled($defender->trainedDefMerc );
            
$defUsersKilledUM=getKilled($defender->untrainedMerc);
            
$defUsersKilledUS=getKilled($defender->untrainedSold);
            
$defUsersKilled=$defUsersKilledAS+$defUsersKilledA  M+$defUsersKilledUS+$defUsersKilledUM;
            
            
$aW=getUserWeapon($atacker);
            
$atackWeaponsA=getWeaponStrA($atacker,$aW,1,$cgi['attacks']);
            
$atackWeapons=$atackWeaponsA[0];
            
$atackWeaponWas=$atackWeaponsA[1];
            
$atackWeaponIs=$atackWeaponsA[2];
            
$atackWeaponCount=$atackWeaponsA[3];
            
            
$aW=getDefUserWeapon($defender);
            
$defWeaponsA=getWeaponStrA($defender,$aW,0,$cgi['attacks']);
            
$defWeapons=$defWeaponsA[0];
            
$defWeaponWas=$defWeaponsA[1];
            
$defWeaponIs=$defWeaponsA[2];
            
$defWeaponCount=$defWeaponsA[3];
            
            
$time=time();
            
            
updateUser($_SESSION['isLogined'],"attackTurns=attackTurns - {$cgi['attacks']} , gold=gold+$gold, trainedAttackSold=trainedAttackSold-$atackUsersKilledAS ,trainedAttackMerc =trainedAttackMerc- $atackUsersKilledAM,untrainedSold=untrainedSold - $atackUsersKilledUS,untrainedMerc=untrainedMerc-$atackUsersKilledUM  ");
            
updateUser($cgi['id'], " gold=gold-$gold, trainedDefSold=trainedDefSold-$defUsersKilledDS ,trainedDefMerc =trainedDefMerc- $defUsersKilledDM,untrainedSold=untrainedSold - $defUsersKilledUS,untrainedMerc=untrainedMerc-$defUsersKilledUM  " );
            
$values="'{$cgi['attacks']}','$atackStrength', '$defStrength', '$gold', '$phrase','$atackUsersKilled','$defUsersKilled','$  atackTrained','$atackUnTrained','$defTrained','$de  fUnTrained','$atackWeapons','$defWeapons','$atackW  eaponWas','$atackWeaponIs','$atackWeaponCount', '$defWeaponWas', '$defWeaponIs', '$defWeaponCount', '$time'";
            
//echo $values;
            //return;
            
addAtack($_SESSION['isLogined'],$cgi['id'],$fields,$values);
            
$atak=getAtackByUser1User2AndTime($_SESSION['isLogined'],$cgi['id'],$time" ID ");
            
header("Location: battlelog.php?id={$atak->ID}");
        }else{
            
$strErr="You do not have enough turns.";
        }    
        
    }
    
}elseif(
$cgi ['defender_id']){
    
$cgi['id']=$cgi ['defender_id'];
    
$atacker=getUserDetails($_SESSION['isLogined']);
    if (
$cgi['numspies']>$atacker->spies)$cgi['numspies']=$atacker->spies;
        if (
$cgi['numspies']>10){$cgi['numspies']=10;}
        if (
$cgi['numspies']<1){$cgi['numspies']=1;}
    if (
$cgi['numspies']&&$atacker->spies){
        
//echo "Spying    ";
        
        
        
$defender=getUserDetails($cgi['id']);
        
$time=time();
        
//echo ($atacker->currentSpySkill+1).";;".$defender->currentSpySkill."##<br>";
        //if (($atacker->currentSpySkill+1)<$defender->currentSpySkill){
        
$tSpies=$atacker->spies;
        
$atacker->spies=$atacker->spies-$cgi['numspies'];
        
$spyStrength=getCovertAction($atacker);    
        
$atacker->spies=$tSpies;
        
$spyDefStrength=getCovertAction($defender);

        if (
$spyStrength<($spyDefStrength-100)){
            
$isSuccess=0;
            
$fields=" `time` ,  `spies`,  `isSuccess`";
            
$values="'$time' ,  '".$cgi['numspies']."',  '$isSuccess'";
            
updateUser($atacker->ID" spies=spies-{$cgi['numspies']} ");
        }else{
            
$isSuccess=1;
            
$spies=$cgi['numspies'];
            
$race=$defender->race;
            
//$atacker->spies=$cgi['numspies'];
            
$dif=$spyStrength-$spyDefStrength;
            if (
$dif>100)$dif=100;
            
$dif+=100;
            
$difPerc=$dif/2;
            
        
//    echo "--$difPerc--<br>";
            
            
$trainedAttackSold=spiedValue($defender->trainedAttackSold,$difPerc);
            
$trainedAttackMerc=spiedValue($defender->trainedAttackMerc,$difPerc);
            
$trainedDefSold=spiedValue($defender->trainedDefSold,$difPerc);
            
$trainedDefMerc=spiedValue($defender->trainedDefMerc,$difPerc);
            
$untrainedMerc=spiedValue($defender->untrainedMerc,$difPerc);
            
$untrainedSold=spiedValue($defender->untrainedSold,$difPerc);
            
            
$strikeAction=getStrikeAction($defender);
            
$strikeAction=spiedValue($strikeAction,$difPerc);
            
            
$defenceAction=getDefenseAction($defender);
            
$defenceAction=spiedValue($defenceAction,$difPerc)  ;
            
            
$covertSkill=spiedValue($defender->currentSpySkill ,$difPerc);
            
$covertOperatives=spiedValue($defender->spies ,$difPerc);
            
$siegeLevel=spiedValue($defender->siegeLevel,$difPerc);
            
$atackTurns=spiedValue($defender->attackTurns,$difPerc);
            
$unitProduction=spiedValue($defender->currentUnitProduction ,$difPerc);
            
/*
            $weapons
            $types
            $quantities
            $strengths
            $allStrengths
            */
            
            
$weapon1=getUserAllWeapon($defender);
            for (
$i=0;$i<count($weapon1);$i++){
                if (!
spiedValue(0,$difPerc)){
                    
$weapons.=spiedValue($weapon1[$i]->weaponID,$difPerc).";";
                    
$types.=spiedValue($weapon1[$i]->isAtack ,$difPerc).";";
                    
$types2.=$weapon1[$i]->isAtack.";";
                    
$quantities.=spiedValue($weapon1[$i]->weaponCount ,$difPerc).";";
                    
$strengths.=spiedValue($weapon1[$i]->weaponStrength ,$difPerc).";";
                    
//$allStrengths.=spiedValue($weapon1[$i]->weaponID,$difPerc).";";
                    
if ($weapon1[$i]->isAtack){
                        
$tS=$conf["race"][$defender->race]["weapon"][$weapon1[$i]->weaponID]["strength"];
                    }else{
                        
$tS=$conf["race"][$defender->race]["defenseweapon"][$weapon1[$i]->weaponID]["strength"];
                    }
                    
$allStrengths.=spiedValue($tS,$difPerc).";";
                }
            }
            
            if (
strlen($weapons)){
                
$weapons=substr($weapons,0,strlen($weapons)-1);
                
$types=substr($types,0,strlen($types)-1);
                
$types2=substr($types2,0,strlen($types2)-1);
                
$quantities=substr($quantities,0,strlen($quantitie  s)-1);
                
$strengths=substr($strengths,0,strlen($strengths)-1);
                
$allStrengths=substr($allStrengths,0,strlen($allSt  rengths)-1);
                
            }
            
            
            
$trainedAttackSold =$defender->trainedAttackSold;
            
$fields="`spyStrength`,  `spyDefStrength`,  `trainedAttackSold`,  `trainedAttackMerc`,  `trainedDefSold`,  `trainedDefMerc`,  `untrainedMerc`,  `untrainedSold`,  `strikeAction` ,  `defenceAction`,  `covertSkill` ,  `covertOperatives`,  `siegeLevel` ,  `atackTurns` ,  `unitProduction` ,  `weapons`,  `types`,  `types2` ,  `quantities`,  `strengths` , `allStrengths`, `time` ,  `spies`,  `isSuccess`, `race`";
            
$values="'$spyStrength',  '$spyDefStrength',  '$trainedAttackSold',  '$trainedAttackMerc',  '$trainedDefSold',  '$trainedDefMerc',  '$untrainedMerc',  '$untrainedSold',  '$strikeAction',  '$defenceAction',  '$covertSkill',  '$covertOperatives',  '$siegeLevel' ,  '$atackTurns' ,  '$unitProduction' ,  '$weapons',  '$types',  '$types2' ,  '$quantities',  '$strengths' ,'$allStrengths',  '$time' ,  '$spies',  '$isSuccess', '$race'";
            
        }
        
//echo $fields."<br>";
        //echo $values;
        //return;
        
addSpy($atacker->ID,$defender->ID,$fields,$values);
        
//return;
        
$spy=getSpyByUser1User2AndTime($atacker->ID,$defender->ID,$time" ID ");
        
        
header("Location: spylog.php?id={$spy->ID}");
    }else{
$strErr="You should enter number of (o have) spies to send.";}
}
?> 


I know the code isnt the best but i just hope someone can help

The other thing is how do i create a "Max" buy button for the armory by that i mean say user has 3mil and wants to buy items that cost 3,500 he presses a button for the max amount and the text box is filled with the max amount? looked all over and found nothing lol

Any help is appreciated i know some of the basics like functions and arrays etc etc but my knowledge is limited!

Last edited by Sid : May 4th, 2008 at 02:13 PM.

Reply With Quote
  #2  
Old May 4th, 2008, 02:13 PM
Sid Sid is offline
Registered User
Codewalkers Newbie (0 - 499 posts)
 
Join Date: May 2008
Posts: 4 Sid User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 28 m 42 sec
Reputation Power: 0
Just noticed i used the wrong tags maybe someone will help now lol

Reply With Quote
  #3  
Old May 5th, 2008, 06:01 PM
Sid Sid is offline
Registered User
Codewalkers Newbie (0 - 499 posts)
 
Join Date: May 2008
Posts: 4 Sid User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 28 m 42 sec
Reputation Power: 0
No-one able to help still canna figure out whats up getting really annoying now

Reply With Quote
  #4  
Old May 8th, 2008, 09:36 PM
Sid Sid is offline
Registered User
Codewalkers Newbie (0 - 499 posts)
 
Join Date: May 2008
Posts: 4 Sid User rank is Just a Lowly Private (1 - 20 Reputation Level) 
Time spent in forums: 28 m 42 sec
Reputation Power: 0
No-one knows how to fix this??? Or even point me in the right direction?

Reply With Quote