Squirrel
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 używa squirrel 2.2.5.

Niektóre przykłady znaczników Squirrel można znaleźć na stronie Squirrel Language Website.

Aby wyświetlić podstawową dokumentację Squirrel , pobierz lub przejrzyj documentation, chociaż nie wszystkie standardowe biblioteki są włączone.

Contents

Przekształcone funkcje Squirrel

Niektóre podstawowe funkcje są zawarte w frameworku Squirrel, ale mogą się różnić. Wszystko, co nie zostało tutaj wyraźnie wymienione lub w dokumentacji AI, może nie działać. To są:

print()

Unikaj używania. Raczej użyć AILog::Info() or AILog::Warning() wysyłać wiadomości. Są ładnie uchwycone i wydrukowane w oknie debugowania AI (jak również na wszystkich normalnych wyjściach debugowania).

abs()

abs() zwraca wartość bezwzględną wartości całkowitej/zmiennoprzecinkowej. Na przykład:

print("abs(-5) is: " + abs(-5));

Wydrukuje:

abs(-5) is: 5

require()

Zawiera fragment kodu z innego pliku. Ścieżka jest względna i natychmiast załaduje kod z tego pliku. Pamiętaj, że każdy plik musi być kompilowany samodzielnie.

require("test.nut");

_cmp()

_cmp to meta-metoda, która umożliwia zastąpienie operacji porównania (<, >, <=, >=) na instancji klasy. Metoda przyjmuje pojedynczy argument typu klasy nadrzędnej i powinna zwrócić liczbę całkowitą opisującą, czy argument jest mniejszy, równy lub większy niż instancja.

class Node {
  cost = 0;

  constructor(cost) {
    this.cost = cost;
  }
}

function Node::_cmp(node) {
  if(this.cost < node.cost) return -1;
  if(this.cost > node.cost) return 1;
  return 0;
}

local a = Node(7);
local b = Node(3);
local cheapest = (a < b) ? a : b;

AILog.Info(cheapest.cost) // Will print "3"

Wbrew intuicji, operator _cmp NIE jest używany dla operatora równości (==). Można go jednak użyć do sprawdzenia równości, stosując następującą sztuczkę...

local equal = nodeA <= nodeB && nodeA >= nodeB;

Narzędzia programistyczne

Squirrel to język skryptowy, więc nie będziesz musiał kompilować AI, jednak istnieją narzędzia, które ułatwią programowanie, w tym funkcje takie jak podświetlanie składni i sprawdzanie błędów.

Eclipse i SQDEV

Eclipse to dobrze znane środowisko IDE oparte na Javie. SQDEV to wtyczka Eclipse ułatwiająca rozwój Squirrel. Aby korzystać z SQDEV, będziesz potrzebować Java 5 i Eclipse 3.2 or higher. Chociaż Eclipse twierdzi, że potrzebuje tylko JRE (Java Runtime Environment), lepiej zainstalować JDK (Java Development Kit), aby uniknąć pewnych błędów biblioteki. Aby zainstalować SQDEV, wykonaj następujące kroki.

  1. W Eclipse, wybierz Help > Software Update > Find and Install...
  2. Wybierz "Search for new features to install"
  3. Wybierz "New Remote Site" i wprowadź następujące dane: Name: SQDev Update Site, URL: http://sqdev.sf.net/update/
  4. Upewnij się, że nowa witryna aktualizacji jest zaznaczona. (Uwaga: może być konieczne odznaczenie "Ignore features not applicable to this environment" aby działało)
  5. Kliknij "Finish" i postępuj zgodnie z instrukcjami.
  6. Po zakończeniu uruchom ponownie środowisko robocze, gdy zostaniesz o to poproszony.

Aby włączyć perspektywę Squirrel , należy utworzyć główne menu zaćmienia Window > Open Perspective > Others i wybierz Squirrel

Ta informacja pochodzi z wiki Squirrel tutaj.