ticker error mit aktueller population formel

Hier können sich alle gegenseitig helfen beim erstellen eines Spiels

Moderator: Agatho

ticker error mit aktueller population formel

mysql error beim ticker

Beitragvon Agatho » 22.11.2005, 11:44

Salut also ich hab die aktuelle Bevölkerungsformel aus den Regeln genommen und bekomme nun beim Ticker folgenden Fehler

Code: Alles auswählen
2005-11-22 09:46:27 ticker/ticker.c:254: db_query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'r_bier = GREATEST(LEAST(r_bier + r_bier_delta, 3000+2000*b_lagerraum), 0),r_hanf' at line 1: UPDATE Cave SET r_population_delta = (LEAST(r_nahrung-SIGN(r_population),(b_partyraum*6+b_schlafplatz/10+2)*(1+population_factor)+population_bonus)) * IF((LEAST(r_nahrung-SIGN(r_population),(b_partyraum*6+b_schlafplatz/10+2)*(1+population_factor)+population_bonus)) <= 0, 1


Der Fehler scheint erst nach dem IF zu beginnen. wenn man nur das UPDATE nimmt geht das also muss die Formel an sich ja richtig sein.
Ich hoffe hier kann mir jemand helfen

MySql Version ist MySQL 5.0.15
Source Version r5b 17.11

Danke und liebe Grüsse

Agatho
Der gesunde Verstand ist das, was in der Welt am besten verheilt ist; denn Jedermann meint damit so gut versehen zu sein, dass selbst Personen, die in allen anderen Dingen schwer zu befriedigen sind, doch an Verstand nicht mehr, als sie haben, sich zu wünschen pflegen.
Dieses Bild wurde gelöscht da es nicht erreichbar war.
Agatho
Sourcenoob Tröster
Sourcenoob Tröster
 
Beiträge: 132
Registriert: 29.01.2004, 02:59
Wohnort: Mayence

Beitragvon Hanschi » 22.11.2005, 13:21

ich zähle 11 mal Klammer auf und nur 10x Klammer zu?

ist nur der Versuch einer Lösung ohne obige Zeile richtig zu verstehen ;-)
Bild

"Wenn dir auch der tiefere Sinn meiner Aktionen verborgen bleibt, so seit doch bitte versichert, dass es zum allgemein Lustgewinn für diese und nächste Runde dient."
Benutzeravatar
Hanschi
Herr der Höhlen
Herr der Höhlen
 
Beiträge: 1235
Registriert: 28.01.2004, 12:47
Wohnort: Berlin

Re: ticker error mit aktueller population formel

mysql error beim ticker

Beitragvon Tenobaal » 22.11.2005, 17:07

Agatho hat geschrieben:[..] IF((LEAST(r_nahrung-SIGN(r_population)),(b_partyraum*6+b_schlafplatz/10+2)*(1+population_factor)+population_bonus)) <= 0, 1[/code]
[..]

Diese Klammer scheint gefehlt zu haben, so dass das Komma noch zu der Rechnung und nicht zu LEAST gezählt wurde.
AGB's, 29) Das Mitglied erklärt sich bereit, niemals Forderungen jeglicher Art an Uga-Agga und deren Betreiber zu richten.


Wer Rechtschreibfehler findet, darf sie behalten.
Benutzeravatar
Tenobaal
Aggas Totenamsel
Aggas Totenamsel
 
Beiträge: 810
Registriert: 28.01.2004, 23:05
Wohnort: Bochum

Beitragvon Firak » 23.11.2005, 01:14

Hanschi hat geschrieben:ich zähle 11 mal Klammer auf und nur 10x Klammer zu?

ist nur der Versuch einer Lösung ohne obige Zeile richtig zu verstehen ;-)


Das SQL-Statement ist (in der Ausgabe) am Ende abgeschnitten, so daß Klammernzählen hier keinen Sinn hat...

Entweder DEBUG_SQL im Ticker einschalten (vermutlich muß man dazu den Ticker neu compilieren) oder mal von Hand die Produktions- und/oder MaxStorage-Formeln in den Spielregeln durchgehen, würde ich sagen.
Night falls and the foul are abroad...
Firak
Halbgott des Schattens
Halbgott des Schattens
 
Beiträge: 169
Registriert: 28.01.2004, 14:35
Wohnort: Osnabrück

Beitragvon Agatho » 29.11.2005, 10:44

Naja war nur ein Klammerfehler ;) nobody 's perfect. Naja ein weiters Problem ist nun, daß man nicht seine in nachrichten sieht. es wird zwar gesagt das man eine neue Nachricht hat und auch das Symbol erscheint allerdings ist die Listendarstellung leer. Out Nachrichten sieht man allerdings ganz normal und ein fehler wird auch nicht ausgegeben.
Der fehler muss in der message.inc.php liegen und zwar in diesem codeabschnitt.
Code: Alles auswählen
function messages_getIncomingMessages($offset, $row_count){
  global $db, $params, $config;

  // get message classes
  $uaMessageClass = MessageClass::getMessageClasses();


  $nachrichten = array();

  // get announcements
  $query =  'SELECT ' .
            'm.messageID, ' .
            'p.name, ' .
            'm.messageClass, ' .
            'm.messageSubject AS betreff, ' .
            'm.messageTime ' .

            'FROM Message m ' .
            'LEFT JOIN Player p ' .
            'ON p.playerID = m.senderID ' .

            'WHERE ' .
            'messageClass = 1001 ' .
            'ORDER BY m.messageTime DESC, m.messageID DESC';

  if (!($dbresult = $db->query($query)))
    return array();

  while($row = $dbresult->nextRow(MYSQL_ASSOC)){
    $row['absender_empfaenger'] = empty($row['name']) ? _MSG_SYSTEM : $row['name'];
    $t = $row['messageTime'];
    $row['datum'] = $t{6}.$t{7}  .".".
                    $t{4}.$t{5}  .".".
                    $t{2}.$t{3}  ." ".
                    $t{8}.$t{9}  .":".
                    $t{10}.$t{11}.":".
                    $t{12}.$t{13};
    $row['nachrichtenart'] = $uaMessageClass[$row['messageClass']];
    $row['linkparams'] = '?modus=messagesdetail&amp;messageID=' . $row['messageID'] . '&amp;box=' . BOX_INCOMING;
    $nachrichten[] = $row;
  }

  // get user messages
  $query = 'SELECT m.messageID, m.flag, p.name, m.messageClass, m.messageSubject AS betreff, m.messageTime, SIGN(m.read) as `read` ' .
           'FROM Message m ' .
           'LEFT JOIN Player p ' .
           'ON p.playerID = m.senderID ' .
           'WHERE ' .
           'recipientID = ' . $params->SESSION->player->playerID . ' ' .
           'AND recipientDeleted != 1 ' .
           'ORDER BY m.messageTime DESC, m.messageID DESC '.
           'LIMIT ' . intval($offset) . ',' . intval($row_count);

  if (!($dbresult = $db->query($query)))
    return array();

  while($row = $dbresult->nextRow(MYSQL_ASSOC)){
    $row['absender_empfaenger'] = empty($row['name']) ? _MSG_SYSTEM : $row['name'];
    $t = $row['messageTime'];
    $row['datum'] = $t{6}.$t{7}  .".".
                    $t{4}.$t{5}  .".".
                    $t{2}.$t{3}  ." ".
                    $t{8}.$t{9}  .":".
                    $t{10}.$t{11}.":".
                    $t{12}.$t{13};
    $row['nachrichtenart'] = $uaMessageClass[$row['messageClass']];
    $row['linkparams'] = '?modus=messagesdetail&amp;messageID=' . $row['messageID'] . '&amp;box=' . BOX_INCOMING;
    $row[($row['flag'] ? 'FLAGGED' : 'UNFLAGGED') . '/id'] = $row['messageID'];
    $nachrichten[] = $row;
  }
  return $nachrichten;
}


vielleicht sieht da ja einer mehr als ich.
wenn man allerdings das mit der outgoing funktion ersetzt (und anpasst) geht das incoming ist allerdings keine adäquarte lösung
Der gesunde Verstand ist das, was in der Welt am besten verheilt ist; denn Jedermann meint damit so gut versehen zu sein, dass selbst Personen, die in allen anderen Dingen schwer zu befriedigen sind, doch an Verstand nicht mehr, als sie haben, sich zu wünschen pflegen.
Dieses Bild wurde gelöscht da es nicht erreichbar war.
Agatho
Sourcenoob Tröster
Sourcenoob Tröster
 
Beiträge: 132
Registriert: 29.01.2004, 02:59
Wohnort: Mayence


Zurück zu Bastelstube für die CVS Version

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron