• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

DaRuller

PHP JOGO MMORPG AJUDA

5 mensagens neste tópico

Fiz 1 jogo mas nao consigo acabar de fazer 1 codigo e preciso de + alguem qeu perceba de php para ser admin comigo no jogo. deixo aqui o codigo e espero por 1 resolução.

este é o codigo. preciso que quando a fabrica nao é ocupada por ninguem apareça se o user a quer comprar. quando a fabrica é ocupada 1 user possa oferecer dinheiro por ela.

<?php
include ("inc/all.php");
requiresLogin();
nojail();
$t = new TemplateParser;
$t->load('template.htm');
$t->set('page', 'Fabrica de balas');
$f = "SELECT * FROM yamm_factories";
$cidade = $USER['city'];
$resultado = mysql_query($f);
while ($linha = mysql_fetch_row($resultado)) {
if ($cidade == $linha[0]) {
$owner = $linha[4];
$preco = $linha[1];
$balas = $linha[2];
$chumbo = $linha[7];
$hora = $linha[5];
$horas = $linha[6];
}
}
if($USER['nbul']+3600 >= time()){
$falta = date("i", $USER['nbul']+3600 - time());
$falta1 = date("s", $USER['nbul']+3600 - time());
$t->suf('body', '<p>Só podes comprar balas de hora em hora, faltam'.$falta.' minutos and '.$falta1.' segundos.');
$t->output();
exit;
}
$utiliza = strtolower($USER['user']);
$owner1 = strtolower($owner);
$leadprice = round((($cache['cash']+$cache['bankmoney'])/750)/1000000)*1000000;
if($leadprice < 1000000) $leadprice = 1000000;
if($owner1 == $utiliza) {
    $t->suf('body', '<p>Estas na posse da fabrica de balas. Há '.number_format($balas).' balas disponiveis e '.number_format($chumbo).' pedaços de metal.</p>');
    $t->suf('body', '<form action="bullets.php" method="post">');
$t->suf('body', '<input type="hidden" name="cidad"  value="'.$cidade.'"/>');
    if($_POST['action'] == 'OK' && $_POST['price'] > 0) {
$npreco = $_POST['price'];
$cidad = $_POST['cidad'];
        mysql_query("UPDATE yamm_factories SET price = \"$npreco\" WHERE city = \"$cidad\"");

        $t->suf('body', '<p>O preço das balas agora é de $'.number_format($_POST['price']).'.</p>');
    } else
        $t->suf('body', '<p>O preço das balas é de $<input name="price" value="'.$preco.'"/>. Ganharás 25% do total deste valor a tua familía ganhará 75%.<input type="submit" name="action" value="OK"/></p>');
    if($hora <= time()) {
        if($_POST['action'] == 'acquire') {
            if($USER['cash'] >= $leadprice) {
$data = (time()+3*60);
$ch = $chumbo + 100;
                mysql_query('UPDATE yamm_users SET cash=cash-'.$leadprice.' WHERE user="'.$USER['user'].'"');
                mysql_query("UPDATE yamm_factories SET nacq=\"$data\", lead=\"$ch\" WHERE city=\"$cidade\"");
                $t->suf('body', '<p>  Queimaste 100 pedaços de chumbo. Poderás fazer a proxima transição em 3 minutos.</p>');
                $chumbo = $chumbo+100;
            } else
                $t->suf('body', '<p>Não tens  $'.number_format($leadprice).'.</p>');
        } else
            $t->suf('body', '<p>Tu podes <input type="submit" name="action" value="adquirir" /> 100 pedaços de chumbo por $'.number_format($leadprice).'.</p>');
    } else 
        $t->suf('body', '<p>Precisas esperar para adquirir mais chumbo.</p>');
    if($horas <= time()) {
        if($_POST['action'] == 'release') {
$data = (time()+60*60);
            mysql_query("UPDATE yamm_factories SET nrelease=\"$data\",lead=\"0\" WHERE city=\"$cidade\"");
$ba1 = $balas + $chumbo;
            mysql_query("UPDATE yamm_factories SET amount=\"$ba1\" WHERE city=\"$cidade\"");
            $t->suf('body', '<p>Tu tiraste '.number_format($chumbo).' balas.</p>');
        } else
            $t->suf('body', '<p>Tu podes <input type="submit" name="action" value="tirar" /> '.number_format($chumbo).' balas. Só podes tirar balas de hora a hora.</p>');
    } else 
        $t->suf('body', '<p>Precisas esperar para poderes tirar balas de novo.</p>');
    if($_POST['action'] == 'sneak') {
        if($_POST['amount'] <= $chumbo) {
            mysql_query('UPDATE yamm_users SET bullets=bullets+'.$_POST['amount'].' WHERE user="'.$USER['user'].'"');
$nch = $chumbo - $_POST['amount'];
mysql_query("UPDATE yamm_factories SET lead=\"$nch\" WHERE city=\"$cidade\"");
            $t->suf('body', '<p>Tu tiraste '.$_POST['amount'].' balas para a tua propria conta.</p>');
        } else
            $t->suf('body', '<p>Não tens chumbo.</p>');
    } else 
        $t->suf('body', '<p>Tu podes <input type="submit" name="action" value="tirar" /> <input type="text" name="amount" /> balas para a tua conta antes de as venderes.</p>');
    $t->suf('body', '</form>');
} else {
    if($_POST['amount'] && is_numeric($_POST['amount']) && ($_POST['amount'] > 0)){
        if($_POST['amount'] <= $balas) {
            if(($_POST['amount']*$preco) <= $USER['cash']){
                $t->pre('body', 'Sucesso! Compraste '.$_POST['amount'].' balas por $'.number_format($_POST['amount']*$preco).'.<br/>');
$tempo = time();
                mysql_query("UPDATE yamm_users SET cash=cash-".($_POST['amount']*$preco).", bullets=bullets+".$_POST['amount'].", nbul = \"$tempo\" WHERE user='".$USER['user']."'") or die(mysql_error());
$quan = $balas - $_POST['amount'];
                mysql_query("UPDATE yamm_factories SET amount=\"$quan\" WHERE city=\"$cidade\"") or die(mysql_error());
                mysql_query('UPDATE yamm_users SET cash=cash+'.round($_POST['amount']*$preco*0.25).' WHERE user="'.$owner.'"') or die(mysql_error());
                if($owner['crew']) 
                    mysql_query('UPDATE yamm_crews SET bank=bank+'.round($_POST['amount']*$preco*0.75).' WHERE id="'.$owner['crew'].'"') or die(mysql_error());
                $balas = $balas-$_POST['amount'];
                
            } else {
                $t->pre('body', 'Primeiro arranja dinheiro.<br/>');
            }
        } else 
            $t->pre('body', '<p>Não há tantas balas disponíveis</p>');
    }

    $t->suf('body', 'Esta fabrica está ocupada por <a href="profile.php?user='.$owner.'">'.$owner.'</a>.<br/>');
    $t->suf('body', 'O preço por bala é de $<strong>'.number_format($preco).'</strong>.<br/>');
    $t->suf('body', 'Há '.number_format($balas).' balas disponíveis.<br/>');
    $t->suf('body', '<form action="bullets.php" method="post"><input type="submit" name="action" value="Comprar"/><input type="text" name="amount"/> balas.</form>');
    
}
$t->output();

?>

e preciso no mesmo codigo(porque 1 é fabrica local) que seja criado 1 painel onde os admins possam controlar a fabrica de balas ou seja que de 5 em cinco minutos possam escolher se aparece 500 balas ou outro numero e o preço tambem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Epa, que bruto código, já ouviste falar em classes em  php? Ia ajudar-te muito num jogo desses, assim de repente acho que és vítima do teu próprio código confuso. Achei engraçado colocares entre / os textos para evitar sql injection

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu nao acho que o uso de programação orientada a objectos tenha que ser solução para tudo nem em particular para este caso.

Lust, as barras não evitam sql injections, ele usou-as apenas para escapar aspas.

Mas realmente esse código precisa de mais organização. Até assusta olhar para tanto caracter todo um em cima do outro.

Coloca duvidas concretas, ninguem aqui vai fazer o teu trabalho, só esclarecer duvidas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas DaRuller eu ate te posso ajudar mas realmente esse codigo ta mal organizado. mas pronto se nao o quiseres alterar entao apenas comenta algumas das linhas mais importantes .

porque para uma pessoa que nao ta a ver o que queres fazer exatamente e depois tentar percebelo assim da realmente mt trabalho. va força ai nisso para o pessoal poder ajudar.

neo-_-man

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pedrotuga, nao disse que OOP ia resolver o problema, apenas mencionei-o para ajudar na organização do código. Se calhar expressei-me mal.

PS: é LuRsT e nao lust :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora