Да запросто ! Их прям тут в подвале бодяжат !Шато Д'Икем 76 года и полкило черной икры будет вполне достаточно.![]()
Да, это интересно
Нет, GameKeeper всем устраивает
Да запросто ! Их прям тут в подвале бодяжат !Шато Д'Икем 76 года и полкило черной икры будет вполне достаточно.![]()
Хотите БЕСПЛАТНЫЙ кипер ?http://www.techrk.ru/?cat=17
Также доступен ФТП !! ftp://techrk.ru
Теперь возможно произвести покупку ПО через терминалы Qiwi.Подробности на сайте
Почитал сайт и так и не понял какие задачи решает ваше ПО "ЦПДСС"...
Сейчас смотрю обмен пакетами контроллеров и сервера. Можете ли вы что-либо подсказать по этому вопросу?
Вот какие пакеты нарыл:
так-как там где я сижу нет сети контроллеров - приходится бегать.Код:Контроллер отправляет(discovery): ('\x00\x02\x00\x23\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x6C\x00\x00\x00\x00', ('172.31.32.1', 18251)) Сервер отправляет(discovery): ('\x00\x01\x00\x03\x00\x04\x00\x01\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00', ('172.31.0.2', 18251)) Контроллер отвечает на discovery: ('\x03\x00\xff\x01\x00\x00\x09\x01', ('172.31.32.1', 18251))
если вы так сайт читаете,то боюсь с данным кодом вам также не разобраться ) Учитывая его хитрую натуруПочитал сайт и так и не понял какие задачи решает ваше ПО "ЦПДСС"(мои до неё 4 часа доходили
)
Хотите БЕСПЛАТНЫЙ кипер ?http://www.techrk.ru/?cat=17
Также доступен ФТП !! ftp://techrk.ru
Теперь возможно произвести покупку ПО через терминалы Qiwi.Подробности на сайте
Шестой набросок сервера:
Весь основной функционал работы с игровыми аппаратами
Поддержка нескольких контроллеров сразу, ведение лога событий, эмуляция текстовых сообщений на диспле.
данный код будет запускать игры и считать купоны записывая это все в ежеденевный лог файл в папке с программой(или другой папке выбранной как рабочей) - этого вполне достаточно для запуска игр "в кредит", когда основная система лежит.Код:#!/usr/bin/env python # -*- coding: utf-8 -*- import socket from datetime import * client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server.bind(('',18251)) devices = {} log = "info.txt"#путь к файлу логов, к началу добавим "Год_месяц_день_" #дата,ип адрес,событие,код карты, количество def tolog(s): logfile = open(datetime.now().strftime("%Y_%m_%d_")+log, "a+") logfile.write(s) logfile.close() def display(data,s): global devices client.sendto("\x03%c\x00\x01\xff\xa1%32.32s"%((devices[data[1][0]]['request_num']),s.decode("UTF-8").encode("cp866")), (data[1][0],18251)) def relay(data): global devices client.sendto("\x03%c\x00\x01\xff\x82\x01"%(devices[data[1][0]]['request_num']), (data[1][0],18251)) while 1: data = server.recvfrom(1024) #print data if data[0][0] == "\x00" and data[0][1] == "\x02": client.sendto("\x01\x01\x00\x03\x00\x04\x00\x01\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00", (data[1][0],18251)) try: devices[data[1][0]]['info_count'] += 1 if devices[data[1][0]]['info_count'] > 60: devices[data[1][0]]['info_count'] = 1 display(data,"Проведите КАРТОЙЦена игры: 50руб") except: devices[data[1][0]] = {} devices[data[1][0]]['info_count'] = 0 devices[data[1][0]]['card'] = "" devices[data[1][0]]['request_num'] = 1 devices[data[1][0]]['reply_num'] = 0 elif data[0][0] == "\x04": print "Recived ANS from %s "%data[1][0] if devices[data[1][0]]['request_num'] == ord(data[0][1]): print "OK %d"%devices[data[1][0]]['request_num'] if devices[data[1][0]]['request_num'] < 254: devices[data[1][0]]['request_num'] += 1 else: devices[data[1][0]]['request_num'] = 0 elif data[0][0] == "\x03":#Обработка ответов о готовности devices[data[1][0]]['reply_num'] = ord(data[0][1]) if data[0][5] == "\x00" and data[0][6] == "\x09" and data[0][7] == "\x01":#Рукопожатие client.sendto("\x03\x01\x00\x00\x00\x00\x00\x20", (data[1][0],18251)) client.sendto("\x04%c"%(devices[data[1][0]]['reply_num']), (data[1][0],18251)) display(data,"Вас приветствует ") elif data[0][5] == "'":#Обработка карты str = "" for i in range(6,22): str +="%2.2x"%ord(data[0][i]) str = str.replace("a","=").replace("f","") devices[data[1][0]]['card'] = str print "Card 2 track: %s"%str client.sendto("\x04%c"%(devices[data[1][0]]['reply_num']), (data[1][0],18251)) if len(str.split("=")) > 2: relay(data) else: display(data,"Ошибка карты") devices[data[1][0]]['info_count'] = 60 elif data[0][5] == "\x08" and data[0][6] == "A":#Обработка ответа о включении реле print "relay OK" client.sendto("\x04%c"%(devices[data[1][0]]['reply_num']), (data[1][0],18251)) display(data,"Карта %s Игра запущена"%devices[data[1][0]]['card'].split("=")[2]) devices[data[1][0]]['info_count'] = 60 tolog("%s;%s;1;%s;1\r\n"%(datetime.now().strftime("%d-%m-%Y %H:%M:%S"),data[1][0],devices[data[1][0]]['card'])) elif data[0][5] == "\x08" and data[0][6] == "\x05":#Обработка ответов от счетчика count = ord(data[0][7])*0xff + ord(data[0][8]) client.sendto("\x04%c"%(devices[data[1][0]]['reply_num']), (data[1][0],18251)) display(data,"Выдано %d купонов "%count) devices[data[1][0]]['info_count'] = 60 tolog("%s;%s;2;%s;%d\r\n"%(datetime.now().strftime("%d-%m-%Y %H:%M:%S"),data[1][0],devices[data[1][0]]['card'],count)) print "Counter EVENT: %d"%count else: print data
Скриншот: https://yadi.sk/i/rRygdFFOfG9Wq
Скомпилированный через py2exe для win32: https://yadi.sk/d/IdS0z8j_fGE6c
базу наверно PostgreSQL возьму - хз как она по быстродействию и наворотам в языке SQL...
Также надо продумать структуру таблиц - у GK она не совсем продуманна.
Последний раз редактировалось NeiroN; 15.03.2015 в 13:27. Причина: обновил код
Хотите БЕСПЛАТНЫЙ кипер ?http://www.techrk.ru/?cat=17
Также доступен ФТП !! ftp://techrk.ru
Теперь возможно произвести покупку ПО через терминалы Qiwi.Подробности на сайте
Обижаешь - весь код мой, и сделан он чтобы просто хоть как то запустить контроллер. Написан путем анализа пакетов через tcpdump, даже прошивки не ковырял ибо лень.
Если все получится то - я сделаю ПО платным. Основная фишка будет в поддержке(частичной или полной) сторонних контроллеров, потому что переоборудовать центр недешевое удовольствие.
Конечно свои контроллеры я подключу по TCP(с этим UDP не так удобно), а точнее по http.
А пока получилась прикольная заглушка - проводишь картой, запускается игра.
Пришол в центр конкурентов, выдернул аплинк из свича и в свой "сервер" который даже на телефоне можно запустить![]()
Написан путем анализа пакетов через tcpdump, даже прошивки не ковырял ибо лень.в чем я не прав ?использолвание UCS-овского говнокода.
основная ошибка УКСА - использование широковещательного канала и СПАМ UDP пакетами.
Хотите БЕСПЛАТНЫЙ кипер ?http://www.techrk.ru/?cat=17
Также доступен ФТП !! ftp://techrk.ru
Теперь возможно произвести покупку ПО через терминалы Qiwi.Подробности на сайте
Начинаю догадываться, где здесь монетизация.выдернул аплинк из свича и в свой "сервер"
Алексей Аркадьев
Когда заказчик ищет волшебника, то чаще всего он находит сказочника.
Если у Вас есть вопрос по поддержке - напишите его на форуме, я обязательно отвечу, если знаю ответ.
Если Вам нужны какие-то файлы, пишите на почту: support@carbis.ru, но вначале посмотрите в разделе для скачивания.
Для коммерческих вопросов:
+7 (495) 740-49-91, или на почту: sales@carbis.ru
С основным функционалом контроллера разобрался:текст выводит, карту читает, реле щелкает, тикеты считает.
Для реализации полной заглушки - можно подцепить его к MSSQL и запускать игры со списанием денег, а можно просто по некоторым номерам карт включать игры - может быть полезно если основная система накрылась и нужно чтобы вот щас все работало.
Но основная цель не в этом.
Теперь нужно выбрать базу. Если у вас есть дельные советы, то буду рад их выслушать.
Теперь нужно выбрать базу. Если у вас есть дельные советы, то буду рад их выслушать.
Эмм ,кто пишет, тот и музыку заказывает.
Хотите БЕСПЛАТНЫЙ кипер ?http://www.techrk.ru/?cat=17
Также доступен ФТП !! ftp://techrk.ru
Теперь возможно произвести покупку ПО через терминалы Qiwi.Подробности на сайте