[C++] [mod_sa] Отправляем задротов в небо
|
|
SenDIK |
Дата: Воскресенье, 21.07.2013, 20:59 | Сообщение # 1
|
Новичок
Сообщений: 10
Статус: Offline
|
Всем привет. Вообщем вы поняли, про что речь. Допустим мы нашли свою жертву, мы садимся к нему на пассажирское место, и тут мы делаем свое черное дело) Отправляем его высоко в небо! Хочу услышать мнение профессионалов, где и что лишнее сделал, где убрать и т.д. Отправляем задротов командой /tpveh, после чего мы возвращаемся на то место, откуда мы телепортировали задрота. Описывать не буду, где и что за что отвечает, но в коде есть комментарии, где вы должны все понять. Действие проходит где то за секунду, но это можно подправить в коде. И так начнем: 1. Объявляем нашу функцию для возвращения игрока на старую позицию (служит в роли таймера): в samp.h ко всем void добавляем: если не знаете где это находится, то находите строчку sampPatchDisableChatInputAdjust и ниже этой строчки вставляете, то что написал выше. в samp.cpp вставляем вот этот код, отвечающий за возвращение ирока на старую позицию: Код void TimerSampCpp()//обьявленная функция в samp.h { if(count >= 1)//счетчик { count++;//запустили счетчик теперь он тикает if(count >= 10)//если прошло 10 тиков то { count = 0;//тики равны 0 GTAfunc_RemoveActorFromCarAndPutAt(oldpos);//вернули игрока на старую позицию } } } в samp.cpp, самое начало, где идет объявление всех переменных, вставляем вот этот код:Код int count = 0;//наш счетчик float oldpos[3];//обьвялем переменные для того чтобы запомнить нашу позицию если вы не можете найти, куда это вставлять, находите строчку int hooksinstalled; и ниже этой строки вставляете, то что написано выше. 2. Функцию отвечающую за возвращение игрока на старую позицию мы создали, но каким же образом она будет работать, если она не вызывается? В cheat.cpp находим: cheat_handle_vehicle_repair_car( info, time_diff ); и ниже этой строчки вставляем вот этот код: Отлично, осталось только добавить саму команду. 3. В samp.cpp находим init_samp_chat_cmds, и регистрируем команду: Код addClientCommand( "tpveh", (int)cmd_tpveh); И ко всем командам сервера в samp.cpp находим: void cmd, и ниже этих команд вставляем: Код void cmd_tpveh ( char *param ) { count = 1;//врубили счетчик struct vehicle_info *pVehicle = vehicle_info_get(-1, 0);//узнаем модель авто struct actor_info *self = actor_info_get( ACTOR_SELF, ACTOR_ALIVE );//узнаем ид нашего актера if(pVehicle == NULL) return;//если авто равно нулю, то не продолжаем цикл if(self == NULL) return;//если актер равен нулю, то не продолжаем цикл vect3_copy( &self->base.matrix[4 * 3], oldpos);//узнали координаты, где мы сейчас стоим float pos[3]; //здесь я обьвил координаты автошколы с высотой 754 метра pos[0]= (-2013.0f * 1);//по оси x pos[1]= (-73.0f * 1);//по оси y pos[2]= (754.0f * 1);//по оси z GTAfunc_PutActorInCar(pVehicle);//посадить на вод. место cheat_vehicle_teleport( pVehicle, pos, 0 );//телепортровали авто на нужное нам место } P.S. Пытался сделать через Sleep(), но у меня код просто тупо зависал на нужное время, и ничего вообщем не происходило, сам не знаю почему, поэтому реализовал если это так можно сказать через таймер. Строго не судите, я совсем недавно в c++ )
|
|
|
|
jOnly |
Дата: Воскресенье, 21.07.2013, 22:18 | Сообщение # 2
|
Новичок
Сообщений: 26
Статус: Offline
|
такие вещи делаются через синхру и не надо будет таймер
Skype: david.nyawa
|
|
|
|
Bomj_Terrorist |
Дата: Воскресенье, 21.07.2013, 22:27 | Сообщение # 3
|
Бывалый
Сообщений: 383
Статус: Offline
|
Лучше просто на синхре установить большую скорость z.
http://www.youtube.com/watch?v=DbBI60FVtkw
Сообщение отредактировал Bomj_Terrorist - Воскресенье, 21.07.2013, 22:27 |
|
|
|
Matti[CM] |
Дата: Понедельник, 22.07.2013, 00:01 | Сообщение # 4
|
Новичок
Сообщений: 5
Статус: Offline
|
Ну с синхрой, или нет, за то выложил. Спасибо, пожалуй дам +. И кстати да, с синхрой намного лучше.
|
|
|
|
Jamely |
Дата: Четверг, 25.07.2013, 07:47 | Сообщение # 5
|
Сообщений: 1603
Статус: Offline
|
Через синхру сделать, не? Впрочем любителям быдлокодинга, либо новичкам должно понравиться З.ы. комментарии в коде настолько уеб*щные...
Сообщение отредактировал Ruskadance - Четверг, 25.07.2013, 07:48 |
|
|
|
NEKRONED |
Дата: Пятница, 26.07.2013, 21:36 | Сообщение # 6
|
Новичок
Сообщений: 28
Статус: Offline
|
Автору + На кол, всех кто пишет "можно через синхру". Можно? Ну так запилите пример блеять! Не нравиться, не читайте. Флудить все могут. А взять и подсказать автору код, у всех в жопе залипает. Он же написал "я совсем недавно в c++". Он ни сном, ни духом. А вы поналетели, граматеи. Тьфу, блять.
Сообщение отредактировал NEKRONED - Пятница, 26.07.2013, 21:37 |
|
|
|
Alex3831 |
Дата: Понедельник, 29.07.2013, 18:41 | Сообщение # 7
|
Новичок
Сообщений: 15
Статус: Offline
|
Вот вроде так делается со Sleep(); Код void prog ( void* ) { struct vehicle_info *pVehicle = vehicle_info_get(-1, 0);//узнаем модель авто struct actor_info *self = actor_info_get( ACTOR_SELF, ACTOR_ALIVE );//узнаем ид нашего актера if(pVehicle == NULL) return;//если авто равно нулю, то не продолжаем цикл if(self == NULL) return;//если актер равен нулю, то не продолжаем цикл vect3_copy( &self->base.matrix[4 * 3], oldpos);//узнали координаты, где мы сейчас стоим float pos[3]; //здесь я обьвил координаты автошколы с высотой 754 метра pos[0]= (-2013.0f * 1);//по оси x pos[1]= (-73.0f * 1);//по оси y pos[2]= (754.0f * 1);//по оси z GTAfunc_PutActorInCar(pVehicle);//посадить на вод. место cheat_vehicle_teleport( pVehicle, pos, 0 );//телепортровали авто на нужное нам место } Потом чуть ниже
Код void cmd_tpveh ( char *param ) { _beginthread(prog,0,NULL); } Осталось поставить Sleep в нужное место и зависать не будет
|
|
|
|
FRiENDZONE |
Дата: Понедельник, 29.07.2013, 19:50 | Сообщение # 8
|
Новичок
Сообщений: 28
Статус: Offline
|
БЫДЛАКОД, фуфуфу ебани с синхрой, хотя не надо, нубейты процветать будут
Skype: despair_l33t Играю в доту 2 (pub and closes) | cs 1.6 (fast-cup only and mixes) Раздача TeamSpeak комнат - http://cheat-master.ru/forum/95-164039-1 Сижу в TeamSpeak'e: 31.131.19.193:9990
|
|
|
|
Alex3831 |
Дата: Понедельник, 29.07.2013, 20:10 | Сообщение # 9
|
Новичок
Сообщений: 15
Статус: Offline
|
FRiENDZONE, Залей свой код, без синхры посмотрим на оформление! давай если ты не трепло ты зальешь его!
Сообщение отредактировал Alex3831 - Понедельник, 29.07.2013, 20:13 |
|
|
|
Artemka7 |
Дата: Вторник, 06.08.2013, 16:51 | Сообщение # 10
|
Новичок
Сообщений: 5
Статус: Offline
|
Как сделать что бы скрипт работал без машины и закидывал игрока из прорисовки в загрузку
Artemka7
|
|
|
|
Bomj_Terrorist |
Дата: Вторник, 06.08.2013, 19:31 | Сообщение # 11
|
Бывалый
Сообщений: 383
Статус: Offline
|
Цитата (FRiENDZONE) ебани с синхрой, хотя не надо, нубейты процветать будут Уже паблик давно.
http://www.youtube.com/watch?v=DbBI60FVtkw
|
|
|
|
Гринфилд |
Дата: Понедельник, 25.08.2014, 14:10 | Сообщение # 12
|
Новичок
Сообщений: 1
Статус: Offline
|
Нужно таймер добавить. И как его добавить?
qq
|
|
|
|
[DJ_KEN[T] |
Дата: Понедельник, 25.08.2014, 19:02 | Сообщение # 13
|
Новичок
Сообщений: 18
Статус: Offline
|
Цитата Гринфилд ( ) Нужно таймер добавить. И как его добавить? void test() { if (cheat_state->_generic.test == 1) { static DWORD time = 0; if (GetTickCount() - 250>time) { 250 - это время. Тут функа. time = GetTickCount(); } } }
Hero
|
|
|
|