Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 5 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.02.14
Prihlásený: 31.03.24
Príspevky: 450
Témy: 198
Bydlisko: Poprad-okolie
Príspevok NapísalOffline : 30.05.2016 20:01

Ahojte, mám script, ktorý mi vypíše používateľov hrajúcich hru. V hre mám 6 frakcií, 3 z nich sa radia k USA (Spojencom) a ostatné k Nemecku (Osi). Chcel by som zadať podmienku, že používateľ nemôže zaútočiť na spriateľenú frakciu, teda frakcia 0 by nemohla zaútočiť na frakciu 3 a 5. Túto frakciu si vždy volí hráč pri registrácii. A samozrejme aj tie frakcie opačne, že 3 nemôže zaútočiť na 0 a na 5 a to isté pre 5 frakciu. Neviem kam by som if vnoril, lebo som to skúšal všade. Aj keď tam je podmienka, že ak je totožná frakcia pre útočníka a obrancu tak vypíše , že zaútočenie nie je možné. V elseif následne ale zaútoči, ak je iný stav. Teda dal som tam podmienku a vypísalo, že nie je možné zaútočiť, ale jednotka zaútočila. Tam by som to potreboval definovať. Neviem už ako, dokázali by ste mi pomôcť?? Prikladám aj kód, Ďakujem vám.
Kód:
if(!isset($_SESSION['uid'])){
   echo "Musíš byť prihlásený!";
}else{
   if(isset($_POST['attack2'])){
      if($user['fraction'] == $attacked_user['fraction']){
         output("Nemôžeš zaútočiť na svoju frakciu!");
      }elseif($stats['battery'] >= 10 && $timer['atime'] == 0 && $stats['attack'] >= 10 && $_POST['attack1'] != "" && $_POST['attack1'] != $_SESSION['uid'] && is_numeric($_POST['attack1']) && $_POST['attack1'] <= $id['MAX(`id`)'] && $_POST['attack1'] > 0){
         output("Bojovníci začali útok!");
         $azarobok1 = 0;
         $azarobok2 = 0;
         $atime = time();
         $working['ayes'] = $atime;
         $stats['battery'] -= 10;
         $stats['rank'] += 4;
         $timer['atime'] = 1;
         $info1 = mysql_query("SELECT `id` FROM `stats` WHERE `id`='".$_POST['attack1']."'") or die(mysql_error());
         $info2 = mysql_fetch_assoc($info1);
         $info3 = $info2['id'];
         $update_working = mysql_query("UPDATE `working` SET `ayes`='".$working['ayes']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         $update_stats = mysql_query("UPDATE `stats` SET `battery`='".$stats['battery']."',`rank`='".$stats['rank']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         $update_timer = mysql_query("UPDATE `timer` SET `atime`='".$timer['atime']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         $update_ranking = mysql_query("UPDATE `ranking` SET `number`='".$info3."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
      }elseif((time() - $working['ayes']) >= 600 && $timer['atime'] == 1){
         $info1 = mysql_query("SELECT `number` FROM `ranking` WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         $info2 = mysql_fetch_assoc($info1);
         $info3 = $info2['number'];
         $info4 = mysql_query("SELECT `defense`,`food`,`gold` FROM `stats` WHERE `id`='".$info3."'") or die(mysql_error());
         $info5 = mysql_fetch_assoc($info4);
         if($stats['attack'] > $info5['defense']){
            $azarobok1 = round($info5['food'] / 2);
            $azarobok2 = round($info5['gold'] / 2);
            output("Získal si ".$azarobok1." jedla a ".$azarobok2." zlata!");
            $atime = 0;
            $working['ayes'] = $atime;
            $stats['food'] += $azarobok1;
            $stats['gold'] += $azarobok2;
            if($azarobok1 > 0){
               $stats['rank'] += 1;
            }
            if($azarobok2 > 0){
               $stats['rank'] += 1;
            }
            $info5['food'] -= $azarobok1;
            $info5['gold'] -= $azarobok2;
            $azarobok1 = 0;
            $azarobok2 = 0;
            $timer['atime'] = 0;
            $update_working = mysql_query("UPDATE `working` SET `ayes`='".$working['ayes']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
            $update_stats = mysql_query("UPDATE `stats` SET `food`='".$stats['food']."',`gold`='".$stats['gold']."',`rank`='".$stats['rank']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
            $update_stats = mysql_query("UPDATE `stats` SET `food`='".$info5['food']."',`gold`='".$info5['gold']."' WHERE `id`='".$info3."'") or die(mysql_error());
            $update_timer = mysql_query("UPDATE `timer` SET `atime`='".$timer['atime']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         }elseif($stats['attack'] <= $info5['defense']){
            output("Bojovníci sa vzdali!");
            $atime = 0;
            $working['ayes'] = $atime;
            $timer['atime'] = 0;
            $update_working = mysql_query("UPDATE `working` SET `ayes`='".$working['ayes']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
            $update_timer = mysql_query("UPDATE `timer` SET `atime`='".$timer['atime']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         }
      }elseif($timer['atime'] == 0){
         if($stats['attack'] == 0){
            output("Nemáš žiaden útok!");
         }elseif($stats['battery'] < 10){
            output("Nemáš dostatok baterky!");
         }elseif($_POST['attack1'] == "" | $_POST['attack1'] == $_SESSION['uid'] | !is_numeric($_POST['attack1']) | $_POST['attack1'] > $id['MAX(`id`)'] | $_POST['attack1'] <= 0){
            output("Toto nieje dobre číslo starostu!");
         }
      }else{
         $zostava = (600 - (time() - $working['ayes']));
         output("Musíš počkať ".$zostava." sekúnd.");
      }
   }     
   if(isset($_POST['askip'])){
      if((time() - $working['ayes']) >= 600){
         output("Bojovníci už skončili svoj útok!");
      }elseif($stats['battery'] >= 10){
         $info1 = mysql_query("SELECT `number` FROM `ranking` WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         $info2 = mysql_fetch_assoc($info1);
         $info3 = $info2['number'];
         $info4 = mysql_query("SELECT `defense`,`food`,`gold` FROM `stats` WHERE `id`='".$info3."'") or die(mysql_error());
         $info5 = mysql_fetch_assoc($info4);
         if($stats['attack'] > $info5['defense']){
            $azarobok1 = round($info5['food'] / 2);
            $azarobok2 = round($info5['gold'] / 2);
            output("Získal si ".$azarobok1." jedla a ".$azarobok2." zlata!");
            $atime = 0;
            $working['ayes'] = $atime;
            $stats['food'] += $azarobok1;
            $stats['gold'] += $azarobok2;
            if($azarobok1 > 0){
               $stats['rank'] += 1;
            }
            if($azarobok2 > 0){
               $stats['rank'] += 1;
            }
            $info5['food'] -= $azarobok1;
            $info5['gold'] -= $azarobok2;
            $azarobok1 = 0;
            $azarobok2 = 0;
            $stats['battery'] -= 10;
            $stats['rank'] += 4;
            $timer['atime'] = 0;
            $update_working = mysql_query("UPDATE `working` SET `ayes`='".$working['ayes']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
            $update_stats = mysql_query("UPDATE `stats` SET `food`='".$stats['food']."',`gold`='".$stats['gold']."',`rank`='".$stats['rank']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
            $update_stats = mysql_query("UPDATE `stats` SET `food`='".$info5['food']."',`gold`='".$info5['gold']."' WHERE `id`='".$info3."'") or die(mysql_error());
            $update_stats = mysql_query("UPDATE `stats` SET `battery`='".$stats['battery']."',`rank`='".$stats['rank']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());//new
            $update_timer = mysql_query("UPDATE `timer` SET `atime`='".$timer['atime']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         }elseif($stats['attack'] <= $info5['defense']){
            output("Bojovníci sa vzdali!");
            $atime = 0;
            $working['ayes'] = $atime;
            $stats['battery'] -= 10;
            $stats['rank'] += 4;
            $timer['atime'] = 0;
            $update_working = mysql_query("UPDATE `working` SET `ayes`='".$working['ayes']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
            $update_stats = mysql_query("UPDATE `stats` SET `battery`='".$stats['battery']."',`rank`='".$stats['rank']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());//new
            $update_timer = mysql_query("UPDATE `timer` SET `atime`='".$timer['atime']."' WHERE `id`='".$_SESSION['uid']."'") or die(mysql_error());
         }
      }else{
         output("Nemáš dostatok baterky!");
      }
   }
   ?>
   <center><h2>Majori</h2></center>
   <br />
   <form action="rankings.php" method="post">
      <td><input type="text" name="attack1"></td>
      <?php
      if($timer['atime'] == 0){?>
         <td><button type="submit" name="attack2" class="btn btn-success">Zaútočiť (10% Batérie)</button></td><?php
      }else{?>
         <td><button type="submit" name="attack2" class="btn btn-warning">Skontrolovať</button></td><?php
         if((time() - $working['ayes']) < 600){?>
            <td><button type="submit" name="askip" class="btn btn-danger">Preskočiť (10% Batérie)</button></td><?php
         }
      }
      ?>
   </form>
   <table cellpadding="2" cellspacing="4">
      <tr>
         <td><img src="images/rank.png"></td>
         <td width="100px">Pozícia:</td>
         <td><img src="images/number.png"></td>
         <td width="100px">Číslo:</td>
         <td><img src="images/mayor.png"></td>
         <td width="100px">Starosta:</td>
         <td><img src="images/food.png"></td>
         <td width="100px">Jedlo:</td>
         <td><img src="images/gold.png"></td>
         <td width="100px">Zlato:</td>
      </tr>
      <?php
      $mayors = mysql_query("SELECT `rank`,`id`,`food`,`gold`,`b4` FROM `stats` WHERE `rank`>='0' ORDER BY `rank` DESC,`id` ASC") or die(mysql_error());
      $rank = 1;
      while($line = mysql_fetch_assoc($mayors)){
         echo "<tr>";
         echo "<td><td><i>" . $rank . ". (" . $line['rank'] . ")" . "</i></td></td>";
         $rank++;
         echo "<td><td><i>" . $line['id'] . "</i></td></td>";
         $get_mayor = mysql_query("SELECT * FROM `user` WHERE `id`='".$line['id']."'") or die(mysql_error());
         $mayor = mysql_fetch_assoc($get_mayor);
         ?><td><img src="images/fraction<?php echo $mayor['fraction']; ?>.png" style="width: 30px; height: 32px;"/></td><td><i><a <?php if($line['b4'] == 1){ ?>style="color: #2196F3;"<?php } ?> href="mayor.php?<?php echo $line['id']; ?>"><?php echo $mayor['username']; ?></a></i></td></td><?php
         echo "<td><td><i>" . $line['food'] . "</i></td></td>";
         echo "<td><td><i>" . $line['gold'] . "</i></td></td>";
         echo "</tr>";
      }
      ?>
   </table>
<?php
}?>

Potreboval by som definovať toto:
if($user['fraction'] == 0) {
if($attacked_user['fraction']== 3){
output("Nemôžeš zaútočiť spojeneckú frakciu!");
}}
Ďakujem za každú pomoc, už si neviem pomôcť
POTREBOVAL BY SOM TO INTEGROVAŤ NIEKDE TU!!
if(isset($_POST['attack2'])){
if($user['fraction'] == $attacked_user['fraction']){
output("Nemôžeš zaútočiť na svoju frakciu!");
}elseif($stats['battery'] >= 10 && $timer['atime'] == 0 && $stats['attack'] >= 10 && $_POST['attack1'] != "" && $_POST['attack1'] != $_SESSION['uid'] && is_numeric($_POST['attack1']) && $_POST['attack1'] <= $id['MAX(`id`)'] && $_POST['attack1'] > 0){
output("Bojovníci začali útok!");


// Spojený príspevok Pon 30.05.16 20:26

Vnorenie podmienky - neviem kam Nech skúšam ako skúšam, vždy tento výsledok aj keď dám podmienku nad ten output.


Offline

Skúsený užívateľ
Skúsený užívateľ
Vnorenie podmienky - neviem kam

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14572
Témy: 66
Bydlisko: Žilina
Príspevok NapísalOffline : 30.05.2016 21:20

Ten kód je žart, však? Toľko problémov v jednej ukážke som už veľmi dlho nevidel. Nech sa učíš z akejkoľvek knihy, spáľ ju a zakop 50m pod zem.







_________________
C#, PHP, ...
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.02.14
Prihlásený: 31.03.24
Príspevky: 450
Témy: 198
Bydlisko: Poprad-okolie
Príspevok Napísal autor témyOffline : 30.05.2016 21:54

Ďakujem za komentár fakt k téme.


Offline

Skúsený užívateľ
Skúsený užívateľ
Vnorenie podmienky - neviem kam

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14572
Témy: 66
Bydlisko: Žilina
Príspevok NapísalOffline : 31.05.2016 1:42

Je to k téme, pretože keby si sa to naučil poriadne a mal prehľadný kód, tak sem nemusíš prísť s otázkou "chcem tam pridať vnorenú podmienku". Pri takto zle napísanom kóde sa ti vôbec nečudujem, že nevieš čo s tým. Máš to deravé, zastaralé a veľmi veľa zlých návykov. Miešanie css, html, php, databázového prístupu, získavania dát od užívateľa atď atď.
Naozaj ti nedokážem odporučiť s čistým svedomím nič iné ako si to proste naštudovať poriadne a prísť sem, keď nebude treba študovať 300 riadkov zdrojáku kvôli jednej malej podmienke. Hlavne ak to nebude stránka na tvojom lokálnom PC a bude mať k tomu prístup viac ľudí. Stačilo by keby tvoj hosting spravil povedzme už len upgrade na najnovšiu verziu PHP a tvoja stránka skončila.







_________________
C#, PHP, ...
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 31.05.2016 7:25

Súhlasím s Waltherom. V tom kóde sa vyznáš len ty a nikto iný. Naposledy som takúto žížalu videl, keď som opravoval webovú aplikáciu napísanú matfyzákom. Celé zle.
Najlepšie naozaj urobíš, keď to celé prepíšeš. Teraz sa v tom vyznáš iba ty, o mesiac už sa v tom nebudeš vyznať ani ty.

Daj tomu nejakú štruktúru, obaľuj čo najviac funkcionality do zmysluplne nazývaných funkcií. Oddeľ html od php - úplne. Jediný php kód v html by mali byť echo, if a foreach.
Používaj viac súborov, nemusí byť všetko v jednom. Include je kamarát.

No a k veci: je hlúposť testovať v podmienke každú frakciu s každou. Radšej to urob nejako takto
Kód:
function isFriend( $myFraction, $attackFraction ) {

 $friends = [
   [0,3,5],
   [2,4]
 ];

 foreach( $friends as $f ) {
   if( in_array($myFraction, $f) && in_array($attackFraction, $f) )
     return true;
 }

 return false;
}

A toto dáš do podmienky na správne miesto. Ale kde je to správne miesto, to tušíš len ty.







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Odpovedať na tému [ Príspevkov: 5 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. neviem najst svoju temu kam ste ju premiestnili

v Správy pre vedenie fóra

1

991

15.11.2008 10:35

JanoF Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vnorenie stranky do stranky

v JavaScript, VBScript, Ajax

1

756

26.02.2011 23:27

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. podmienky

v PHP, ASP

16

827

26.02.2008 20:25

emer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Podmienky

v Assembler, C, C++, Pascal, Java

8

561

23.11.2016 21:39

focko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Licencne podmienky

v Ostatné

1

587

03.06.2011 21:17

emer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. podmienky tlaciarne

v Grafické programy

0

717

01.04.2008 18:06

Kamahl Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Podmienky pouzivania Youtube.

v Služby a webstránky

7

678

21.02.2012 12:44

walther Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Excel 2 podmienky

v Ostatné programy

2

346

13.12.2013 19:02

bizmos Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. MYSQL vypis podmienky

v Databázy

6

788

07.09.2010 20:15

camo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. if empty - podmienky

v PHP, ASP

2

450

27.01.2010 13:09

davider137 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. jQuery a podmienky

v JavaScript, VBScript, Ajax

2

612

09.04.2009 22:33

Flety Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Podmienky používania (programy)

v Krčma

5

442

29.07.2012 22:52

eMp Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP a podmienky

v PHP, ASP

5

641

13.11.2007 10:01

mondzo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. google maps podmienky

v Ostatné

2

1170

22.07.2011 16:32

jablko05 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Alza a záručné podmienky

v Obchody, reklamácie a právo

4

451

10.04.2014 22:26

winyx Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. podmienky pre kupu zdroja

v PC skrinky, zdroje a všetky druhy chladenia

1

406

08.02.2009 19:28

OmeGa Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra