Last Error
NoAI Framework

NoAI Strona główna

Rozwój

Kamienie Milowe rozwoju
Sugerowane zmiany API

Programowanie SI

Dokumentacja API
Wprowadzenie
plik info.nut
plik main.nut
Podstawy
Poszukiwacz drogi
Użycie pathfinder`a kolei
Zapis / Odczyt danych
Dobrze wiedzieć
Squirrel
Home page
Typowe błędy
Listy
Poradnik na błędy OTTD
Trams
Biblioteki SI
Forum
Forum FAQ
Zachowanie SI
Użycie krótkich nazw

SIy

TestAI
WrightAI
Convoy
SimpleAI
Porównanie AI
Zobacz forum
Zobacz BaNaNaS
Wszystko kategorii NoAI

OpenTTD to gra w czasie rzeczywistym, więc żaden program nie może przewidzieć, czy pewne zaplanowane działanie zakończy się niepowodzeniem, czy też się powiedzie, dopóki nie zostanie wykonane. Pozwalając SI budować mosty, pojazdy, przekierowuj samoloty, ponieważ niektóre z tych poleceń zawiodą z jakiegoś powodu. Samolot może się rozbić, może być wymagane więcej pieniędzy, a inni przeciwnicy mogą zakłócać jego plany. Na razie NoAI nie może zgłaszać, czy polecenie zostało wykonane pomyślnie, jednak jeśli polecenie nie powiodło się, nie może zgłosić przyczyny niepowodzenia. Ta strona jest zarówno instrukcją dla pisarzy AI, ponieważ zawiera wskazówki dotyczące kodowania dla programistów, którzy chcą pomóc w aktualizacji tej funkcji i naprawianiu błędów.

Kod

Każdy kod błędu w OpenTTD ma swój własny identyfikator (StringID) i służy do przetłumaczenia błędu na jeden z różnych języków w celu powiadomienia użytkownika za pomocą komunikatu w GUI. Aby przetłumaczyć te błędy, musimy przetłumaczyć te identyfikatory StringID na komunikaty o błędach i udostępnić je za pomocą interfejsu API NoAI. Ostatni komunikat o błędzie można uzyskać, wywołując AIError.GetLastError() , a komunikaty o błędach można sprawdzić za pomocą:

if (!AIAirport.BuildAirport(...)) {
  switch(AIError.GetLastError()) {
    case AIError.ERR_NOT_ENOUGH_CASH: // Get some more change
      ...
      break;
    case AIError.ERR_LOCAL_AUTHORITY_REFUSES: // Bribe!
      ...
      break;
    case AIError.ERR_LAND_SLOPED_WRONG: // Do some terraforming
      ...
      break;
    ...
    default:
      AILog.Warning("Unhandled exception: " + AIError.GetLastErrorString());
      break;
  }
}

Wewnętrzne komunikaty o błędach są odwzorowywane na obie stałe wyliczeniowe (takie jak AIError.ERR_NOT_ENOUGH_CASH ) i reprezentację ciągu. Reprezentację ciągu można uzyskać, wywołując AIError.GetLastErrorString i będzie pasować do nazwy stałej wyliczającej, zwróć uwagę, że jest ona przeznaczona wyłącznie do celów debugowania! Dokumentacja interfejsu API zawiera listę wszystkich błędów według metod, które mogą wystąpić po jej wywołaniu. Istnieją jednak pewne wyjątki, następujące błędy nie zostaną wymienione, ponieważ dotyczą (prawie) wszystkich metod:

Znaczenie innych komunikatów o błędach można sprawdzić w API.