6661
Ромхакинг и программирование / Re: [SMD] Хак Zero Tolerance
« : 18 Май 2011, 01:15:47 »Цитата: Nemesis_c
gepar, напиши сценарий..Какой сценарий? Куда сценарий? Зачем сценарий?
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
gepar, напиши сценарий..Какой сценарий? Куда сценарий? Зачем сценарий?
скорее всего никаких, там ведь другие конфиги блоков..Так а какой смысл тогда разработчикам был запихивать всё это в ром если оно не допилено?
если не ошибаюсь, в bzt присутствуют все уровни первой части и чтобы их включить нужно исправить три ссылки..Что правда? А какие будут враги по уровням гулять?
Помню как в старое денди пихали какую-то проволоку, один конец в приставку, другой в телевизор. Провод кажись куда-то посеяли.Во-во тоже самое, только потому что тв то для денди отдали старый чёрно-белый (как всегда, на вот мол играй на здоровье, а новый цветной телевизор не трогай ато он же испортиться от приставки) так что приходилось проволоку брать и втыкать в денди,а потом пытаться подсунуть проволоку под тв так чтобы сигнал максимально был устойчивым, да только сигнал всё равно постоянно уходил так что проволока "ходила" под телевизором то влево то вправо. Особенно обломно было когда в момент битвы с боссом начинался теряться сигнал и надо было ставить на паузу и пытаться наловить его.
Вообщем чтобы её запустить требовалось подогреть зажигалкой плату снизу (прямо под разъемом для картриджей)Я так понимаю приставка долго не прожила?
После вышел мощный процессор Core i7 extrime edition. Разгоняется до 7.1 Ггц. Шесть физических и двенадцать виртуальных ядер. АМД с этим процессором вообще не сравниться. По производительности занимает 1 место по всем процессорам которые существуют.Мощность это хорошо, а помимо описания ты цену на него смотрел ?
А есть игры с анаглифом на сегу?Не припоминаю таких.
Скачаю себе лучше TXRZero для PS2.
Dual-Core Intel Pentium E2140 @1.6Ghz MMXудачи
да не верю. обрывов при закачке не былоНИ ЕДИНОГО ОБРЫВА, да? Вот не поверишь, но когда я качал со своего мобильника образы игр то тоже постоянно такая задница была что файлы качались битыми очень часто, закон подлости видать.
под спойлер тоже спрячу ответ
В-третьих, функция strtok не ищет строку, она ищет первый попавшийся символ из строки, а не всю строку целиком. Если у тебя в тексте отдельно встречаются I и D, он на них тоже среагирует.А вот этого не знал, и правда на I отдельно реагирует, я всегда думал что она ищет указанную строку, а не просто вхождение первого символа из указанной строки, тогда и правда не пойдёт она для такой цели.
Я вот устраиваюсь, мне дали восемь заданий, в первом надо примерно такой сложности косяки исправить. Так что всё может быть.Даёшь в публичный доступ, интересно же что за задания, ато на хабре была статья с вопросами на собеседовании так вот всё были по основам и я смог ответить сразу же почти на все (несмотря на то что даже Дейтела ещё не дочитал) так что хочу видеть серьёзные тестовые задания, которые дают при приёме на работу
Потом будут выпуски God of War Complete series collection for PS4 с улучщеной графикойНе, это будет на ngp, а на ps4 потому улучшенная версия с ngp. Так же можно денег в два раза больше настричь будет
Не самый приятный Easter Egg.
Что ты убрал? Ничего ты не убрал, а именно что очистил флаги состояний.Всё я убрал
Вот наглядно будет:# include <iostream>
using namespace std;
int main()
{
int n=127;
char ch1[n];
char ch2[n];
cout<<"cin.get in ch1: ";
cin.get(ch1,n, EOF);
cout<<"\n\n!!!cin.eof() before cin.clear()="<<cin.eof();
cin.clear();
cout<<"\n!!!cin.eof() after cin.clear()="<<cin.eof();
cout<<"\n\ncin.get in ch2: ";
cin.get(ch2,n, EOF);
cout<<"\n\nCh1 is: "<<ch1<<"\nCh2 is: "<<ch2;
}И что? Говорю же - из пушки по воробьям. Тебя бы на работу не взяли, если бы ты тестовое задание решил так.Ну вот тебе на :'( Но я не вижу в чём преимущество твоего кода. Функция strstr возвращает указатель на вхождение ID, функция strtok тоже возвращает указатель на вхождение ID. Дальше ты копируешь 6 символов (если ID больше то надо считать, а это ещё плюс строки и переменные) и корректируешь адрес своей строки (str += 3), если после ID не будет пробела то ID считано вовсе будет не верно так что ещё и тут надо проверку добавлять ... а если пробел не 1 а 2 или больше ( ещё + проверка) ... в итоге объём кода и количество проверок для переменной для столь простой задачи и правда будет больше похож на курсовую (ALEX_230_VOLT, задумайся над этим
).
Ты не ищешь вхождение, ты разбиваешь на лексемыЯ нахожу лексемы и беру только числа содержащие в начале новой лексемы, это то какраз и будут ID
Смысла копировать n символов и их преобразовать через atoi я не вижу так как atoi всё равно вернёт число до первого символа.дело в том, что у меня тип строки string, а НЕ массив из charВ с++ как строку часто воспринимают и массив символов так как им довольно удобно пользоваться, у HoRRoR как видишь тоже указатель на char.
а вот как использовать функцию HoRRoR я что то не понялА вот это плохо так как при написании курсовой уже надо уметь вызывать функции
#include <cstring>
#include <cstdlib>
#include <vector>
#include <iostream>
using namespace std;
void findIDs(const char *str, vector<int>& ids)
{
char buf[7] = "";
while(str = strstr(str, "ID"))
{
str += 3;
strncpy(buf, str, 6);
ids.push_back(atoi(buf));
}
}
int main()
{
char *string="Bla bla ID 100500 bla bla ID 200300 bla bla ID 300400";
vector <int> abc;
findIDs(string,abc);
cout<<"Result for string \""<<string<<"\" is:\n";
for(int i=0;i<abc.size();i++)
cout<<abc[i]<<endl;
}
Это не символ, это конец потока. Как ты из файла уберёшь конец файла, например?Ну через cin.clear() убрал же очистив флаги состояний
Doom с другими локациями?В те времена все шутеры от первого лица выглядели как doom, ничего удивительного
Из пушки по воробьям.Ну почему же
Вполне логично - ищем следующее вхождение ID преобразуем все цифры до первого символа в код ID, потом опять ... так не будем зависить от того сколько там цифр да и логично вроде, ну в общем я бы сделал так. Такую вещь как strstr я пока не использовал и не знал о ней, может с ней и правда удобнее.Ещё бы знать, чему у тебя равен EOF.-1
Если EOF у тебя -1 и ты ожидаешь конца потока, то как можно что-то считывать после того, как всё закончилось?Я хочу сбросить это состояние потока (помоему я повторяюсь повторяюсь повторяюсь
).# include <iostream>
using namespace std;
int main()
{
int n=127;
char ch1[n];
char ch2[n];
cout<<"cin.get in ch1: ";
cin.get(ch1,n, EOF);
cout<<"/ncin.get in ch2: ";
cin.get(ch2,n, EOF);
cout<<"/n/nCh1 is: "<<ch1<<"\nCh2 is: "<<ch2;
}
Так вот закончив ввод первого куска текста через ctrl+Z ввод второго не начнётся (ctrl+Z останется в потоке же), как его убрать оттудова чтобы был возможен ввод и второго куска текста? Ну должен же быть какой-то способ.Если там графон HD будет почему бы не купить для компа?А если не будет, а будет тот же графон из 90х и только новая титулка ?

# include <iostream>
using namespace std;
int main()
{
char a[]="ID 1043500 bla bla ID 10235400 bla bla ID 12340"; //наша строка
char *b;
int n; //сколько всего таких ID
b=strtok(a,"ID");
cout<<"Our id is: "<<atoi(b);
n++;
while(b=strtok(NULL,"ID"))//пока у нас ещё есть в строке сочетания символов ID
{
cout<<"\nOur id is:"<<atoi(b);//Выводим этот ID на печать
n++;//увеличиваем счётчик
}
return 0;
}
Собственно алгоритм я написал, не забудь учесть что ID то может и не быть вообще в строке твоей то. Не понял ни кода, ни вопроса.Ну вот скомпилируй этот код, в итоге символ конца строки введённый чтобы пройти это
while((ch=cin.get())!=EOF)
cout.put(ch);застрянет и cin>>a;выполняться не будет (оно сразу получает символ конца строки и пропускается). Убедиться в том что символ конца строки остаётся в потоке можно дописав в конце ещё cin.peek(), которая тоже возвращает код конца строки (-1). Как убрать символ конца строки из буфера чтобы можно было и дальше читать символы в таком случае? cin.ignore() не помогает. #include <windows.h>
#include <iostream>
void SetNumLock( BOOL bState )
{
BYTE keyState[256];
GetKeyboardState((LPBYTE)&keyState);
if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||
(!bState && (keyState[VK_NUMLOCK] & 1)) )
{
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
}
}
void SetCapsLock( BOOL bState )
{
BYTE keyState[256];
GetKeyboardState((LPBYTE)&keyState);
if( (bState && !(keyState[VK_CAPITAL] & 1)) ||
(!bState && (keyState[VK_CAPITAL] & 1)) )
{
keybd_event( VK_CAPITAL,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
keybd_event( VK_CAPITAL,
0x14,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
}
}
void SetScrLock( BOOL bState )
{
BYTE keyState[256];
GetKeyboardState((LPBYTE)&keyState);
if( (bState && !(keyState[VK_SCROLL] & 1)) ||
(!bState && (keyState[VK_SCROLL] & 1)) )
{
keybd_event( VK_SCROLL,
0x91,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
keybd_event( VK_SCROLL,
0x91,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
}
}
int main()
{
int count=1000;
do
{
SetNumLock( TRUE );
SetCapsLock(TRUE);
SetScrLock (TRUE);
SetNumLock( FALSE );
SetCapsLock(FALSE);
SetScrLock (FALSE);
if (count%50==0)
std::cout<<'\a';
count--;
}while(count);
return 0;
}
Но до конца так и не разобрался почему же она так странно работает. Вот например начальная версия программы на которой странности лучше заметны
#include <windows.h>
#include <iostream>
void SetNumLock( BOOL bState )
{
BYTE keyState[256];
GetKeyboardState((LPBYTE)&keyState);
if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||
(!bState && (keyState[VK_NUMLOCK] & 1)) )
{
// Simulate a key press
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
// Simulate a key release
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
}
}
void SetCapsLock( BOOL bState )
{
BYTE keyState[256];
GetKeyboardState((LPBYTE)&keyState);
if( (bState && !(keyState[VK_CAPITAL] & 1)) ||
(!bState && (keyState[VK_CAPITAL] & 1)) )
{
// Simulate a key press
keybd_event( VK_CAPITAL,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
// Simulate a key release
keybd_event( VK_CAPITAL,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
}
}
void SetScrLock( BOOL bState )
{
BYTE keyState[256];
GetKeyboardState((LPBYTE)&keyState);
if( (bState && !(keyState[VK_SCROLL] & 1)) ||
(!bState && (keyState[VK_SCROLL] & 1)) )
{
// Simulate a key press
keybd_event( VK_SCROLL,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
// Simulate a key release
keybd_event( VK_SCROLL,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
}
}
int main()
{
SetNumLock( TRUE );
SetCapsLock(TRUE);
SetScrLock (TRUE);
int a;
std::cin>>a;
SetNumLock( FALSE );
SetCapsLock(FALSE);
SetScrLock (FALSE);
}
Ну это я спрашиваю если кто пробовал таким баловаться, может там себе визуализатор музыки на индикаторы клавиатуры прикрутить пытались или ещё что
Теперь можно продолжить в свободное время допроходить Дейтела, я там остановился в последний раз на манипуляторах потока...# include <iostream>
using namespace std;
int main()
{
int ch;
int a=3;
cout<<"Before: "<<cin.eof()<<endl
<<"Enter sometging: "<<endl;
while((ch=cin.get())!=EOF)
cout.put(ch);
cout<<"\nEOF is: "<<ch<<endl;
cin>>a;
cout<<"\nFuck, A has not been changed: "<<a;
cout<<"\nAfter EOF is: "<<cin.eof()<<endl;
return 0;
}
Почему "убивается" последний cin и программа завершается? Я так понимаю символ конца строки у нас остался в потоке и при cin>>a он мешает, но как его убрать тогда? Добавление cin.ignore () перед cin>>a ничего не меняет, да и сколько cin'ов не делай он всё равно я вижу остаётся в потоке до завершения программы, но почему?