Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def broadcast(message) {
- for (var i=0; i<CountPlayers(); ++i) {
- var player = GetPlayerAtIndex(i);
- ConsoleMessage(player, message);
- }
- }
- def OnPlayerChat(player, input) {
- var tokens = [];
- var token = "";
- for (var i=0; i<input.size(); ++i) {
- var char = input[i];
- if (char == ' ') {
- continue;
- }
- if (char >= '0' && char <= '9') {
- token.push_back(char);
- } else if (char == '.' || char == ',') {
- if (token.find(".") == -1) {
- token.push_back('.');
- } else {
- return;
- }
- } else if (char == '+' || char == '-' || char == '*' || char == '/' || char == '(' || char == ')') {
- tokens.push_back(token);
- token = "";
- tokens.push_back(char);
- } else {
- return;
- }
- }
- tokens.push_back(token);
- var queue = [];
- var stack = [];
- for (var i=0; i<tokens.size(); ++i) {
- var t = tokens[i];
- if (type_name(t) == "string") {
- if (t == "") {
- continue;
- }
- queue.push_back(to_float(t));
- } else if (t == '+' || t == '-') {
- while(!stack.empty()) {
- var a = stack.back();
- if (a == '(') {
- break;
- }
- stack.pop_back();
- queue.push_back(a);
- }
- stack.push_back(t);
- } else if (t == '*' || t == '/') {
- while(!stack.empty()) {
- var a = stack.back();
- if (a == '+' || a == '-' || a == '(') {
- break;
- }
- stack.pop_back();
- queue.push_back(a);
- }
- stack.push_back(t);
- } else if (t == '(') {
- stack.push_back(t);
- } else if (t == ')') {
- while(true) {
- var a = stack.back();
- stack.pop_back();
- if (a == '(' || stack.empty()) {
- break;
- }
- queue.push_back(a);
- }
- }
- }
- while(!stack.empty()) {
- queue.push_back(stack.back());
- stack.pop_back();
- }
- if (queue.size() == 1) {
- return;
- }
- var stack2 = [];
- for (var i=0; i<queue.size(); ++i) {
- var a = queue[i];
- if (type_name(a) == "float") {
- stack2.push_back(a);
- continue;
- }
- if (stack2.size() < 2) {
- return;
- }
- var y = stack2.back();
- stack2.pop_back();
- var x = stack2.back();
- stack2.pop_back();
- if (a == '+') {
- stack2.push_back(x + y);
- } else if (a == '-') {
- stack2.push_back(x - y);
- } else if (a == '*') {
- stack2.push_back(x * y);
- } else if (a == '/') {
- stack2.push_back(x / y);
- }
- }
- if (stack2.size() != 1) {
- return;
- }
- broadcast("^6${stack2[0]}");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement