|
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.
|