BEGIN TRAN BUYITEM;
UPDATE users SET cash = cash-@cash WHERE id = @id and cash>=@cash;
IF @@ROWCOUNT=0 BEGIN ROLLBACK TRAN BUYITEM RETURN END;
INSERT INTO items VALUES (@id, @item);
COMMIT TRAN BUYITEM;
А такой вариант нормальный? Или плохой тон или вообще уязвимый?
Спасибо.
1) Игру писал в основном я, то что не я, то контролировалось мною. Сообщения текстового чата хранятся в БД, получение новых сообщений происходит раз в 2 секунды.
2) Сейчас стоит TeamSpeak на стороне,, в нем игроки говорят довольно длинные речи и поэтому вряд ли 2-й вариант подойдет.
3) Канал 100Мб/с, Intel Core 2 Duo E8400 (2 ядра) 3ГГц, 6ГБ RAM. У нас около 30 комнат. Половина из них редко посещаемые, т.е. из активных 5 комнат по 5 человек в онайне. Надеюсь хватит.
Вопрос, как записывать и транслировать в первом варианте. Просто проблема вот в чем:
Я могу определить что за пользователь и в какой комнате он находится. У меня был опыт с трансляцией аудио потока. Но я не знаю, как записать голос игрока в поток и транслировать всем остальным. Ничего про клиентское и про серверное, Есть что можно почитать?
а) У меня около 50 комнат. Т.е. стоит хранить все 50 комнат? В комнате обычно от 1 до 20 человек.
д) я думал, что есть более простое решение.
г) извиняюсь, исправил
Все понятно, кроме одного: <_script type="text/javascript"> document.write('<link href="css/main.css?rnd=' + Math.round(Math.random() * 100000) + '" rel="stylesheet" type="text/css" \/>');</_script>
Это перезагружает все картинки, даже если они были в кеше.