[RakSAMP] Использование RPC_ScrSetPlayerPos
|
|
Голубь |
Дата: Понедельник, 20.05.2013, 09:20 | Сообщение # 16
|
Авторитет
Сообщений: 2137
Статус: Offline
|
Рудя, RPC SetPlayerHealth установи
двач https://vk.com/povargek
|
|
|
|
_Rock_ |
Дата: Понедельник, 20.05.2013, 16:37 | Сообщение # 17
|
Советник
Сообщений: 606
Статус: Offline
|
У меня вот такая ситуация... Не могу спавниться на респе, может кто то сталкивался? А когда выбираю runmode "2/4" то банит на 24/часа.
|
|
|
|
Jamely |
Дата: Вторник, 21.05.2013, 16:59 | Сообщение # 18
|
Сообщений: 1603
Статус: Offline
|
Рудя, закомментируй функцию копирования HP и Брони у игрока
|
|
|
|
Рудя |
Дата: Вторник, 21.05.2013, 18:00 | Сообщение # 19
|
Боец
Сообщений: 81
Статус: Offline
|
Цитата (Ruskadance) Рудя, закомментируй функцию копирования HP и Брони у игрока. Я об этом тоже подумал, когда поставил слежку за копом и мой бот броню начитерил. Так вот, где храниться копирование HP и Брони? Я уже предполагаю где, сейчас проверю.Добавлено (21.05.2013, 18:00) --------------------------------------------- Всё, спасибо, работает. Только теперь у бота 0 хп, что с этим делать?
Бот на ферму - https://www.youtube.com/watch?v=sYjCkLjBQ5g
|
|
|
|
Jamely |
Дата: Среда, 22.05.2013, 10:58 | Сообщение # 20
|
Сообщений: 1603
Статус: Offline
|
Цитата (Рудя) Всё, спасибо, работает. Только теперь у бота 0 хп, что с этим делать? Может не откуда не надо убрал?
|
|
|
|
Рудя |
Дата: Среда, 22.05.2013, 15:07 | Сообщение # 21
|
Боец
Сообщений: 81
Статус: Offline
|
Цитата (Ruskadance) Может откуда не надо убрал? Я убрал из функции SendOnFootFullSyncData в localplayer.cpp: Код pofSync->vecPos[0] = playerInfo[followPlayerID].onfootData.vecPos[0] + settings.fFollowXOffset; pofSync->vecPos[1] = playerInfo[followPlayerID].onfootData.vecPos[1] + settings.fFollowYOffset; pofSync->vecPos[2] = playerInfo[followPlayerID].onfootData.vecPos[2] + settings.fFollowZOffset;
pofSync->fQuaternion[0] = playerInfo[followPlayerID].onfootData.fQuaternion[0]; pofSync->fQuaternion[1] = playerInfo[followPlayerID].onfootData.fQuaternion[1]; pofSync->fQuaternion[2] = playerInfo[followPlayerID].onfootData.fQuaternion[2]; pofSync->fQuaternion[3] = playerInfo[followPlayerID].onfootData.fQuaternion[3];
pofSync->byteCurrentWeapon = playerInfo[followPlayerID].onfootData.byteCurrentWeapon; pofSync->byteSpecialAction = playerInfo[followPlayerID].onfootData.byteSpecialAction;
pofSync->vecMoveSpeed[0] = playerInfo[followPlayerID].onfootData.vecMoveSpeed[0]; pofSync->vecMoveSpeed[1] = playerInfo[followPlayerID].onfootData.vecMoveSpeed[1]; pofSync->vecMoveSpeed[2] = playerInfo[followPlayerID].onfootData.vecMoveSpeed[2]; Вот там были ещё Health и Armor вот их я и убрал. Полный код: Код void SendOnFootFullSyncData(ONFOOT_SYNC_DATA *pofSync, int sendDeathNoti, PLAYERID followPlayerID) { if(pofSync == NULL) return;
RakNet::BitStream bsPlayerSync;
if(dwLastOnFootDataSentTick && dwLastOnFootDataSentTick < (GetTickCount() - iNetModeNormalOnfootSendRate)) { if(followPlayerID != (PLAYERID)-1) { if(!playerInfo[followPlayerID].iIsConnected) return; if(iFollowingPassenger || iFollowingDriver) return;
pofSync->lrAnalog = playerInfo[followPlayerID].onfootData.lrAnalog; pofSync->udAnalog = playerInfo[followPlayerID].onfootData.udAnalog; pofSync->wKeys = playerInfo[followPlayerID].onfootData.wKeys;
pofSync->vecPos[0] = playerInfo[followPlayerID].onfootData.vecPos[0] + settings.fFollowXOffset; pofSync->vecPos[1] = playerInfo[followPlayerID].onfootData.vecPos[1] + settings.fFollowYOffset; pofSync->vecPos[2] = playerInfo[followPlayerID].onfootData.vecPos[2] + settings.fFollowZOffset;
pofSync->fQuaternion[0] = playerInfo[followPlayerID].onfootData.fQuaternion[0]; pofSync->fQuaternion[1] = playerInfo[followPlayerID].onfootData.fQuaternion[1]; pofSync->fQuaternion[2] = playerInfo[followPlayerID].onfootData.fQuaternion[2]; pofSync->fQuaternion[3] = playerInfo[followPlayerID].onfootData.fQuaternion[3];
pofSync->byteCurrentWeapon = playerInfo[followPlayerID].onfootData.byteCurrentWeapon; pofSync->byteSpecialAction = playerInfo[followPlayerID].onfootData.byteSpecialAction;
pofSync->vecMoveSpeed[0] = playerInfo[followPlayerID].onfootData.vecMoveSpeed[0]; pofSync->vecMoveSpeed[1] = playerInfo[followPlayerID].onfootData.vecMoveSpeed[1]; pofSync->vecMoveSpeed[2] = playerInfo[followPlayerID].onfootData.vecMoveSpeed[2];
pofSync->iCurrentAnimationID = playerInfo[followPlayerID].onfootData.iCurrentAnimationID;
bsPlayerSync.Write((BYTE)ID_PLAYER_SYNC); bsPlayerSync.Write((PCHAR)pofSync, sizeof(ONFOOT_SYNC_DATA)); pRakClient->Send(&bsPlayerSync, HIGH_PRIORITY, UNRELIABLE_SEQUENCED, 0);
if(sendDeathNoti && pofSync->byteHealth == 0) SendWastedNotification(0, -1);
dwLastOnFootDataSentTick = GetTickCount(); } else { bsPlayerSync.Write((BYTE)ID_PLAYER_SYNC); bsPlayerSync.Write((PCHAR)pofSync, sizeof(ONFOOT_SYNC_DATA)); pRakClient->Send(&bsPlayerSync, HIGH_PRIORITY, UNRELIABLE_SEQUENCED, 0);
if(sendDeathNoti && pofSync->byteHealth == 0) SendWastedNotification(0, -1);
dwLastOnFootDataSentTick = GetTickCount(); } } }
Бот на ферму - https://www.youtube.com/watch?v=sYjCkLjBQ5g
Сообщение отредактировал Рудя - Среда, 22.05.2013, 15:08 |
|
|
|
Jamely |
Дата: Пятница, 24.05.2013, 16:42 | Сообщение # 22
|
Сообщений: 1603
Статус: Offline
|
Цитата (Рудя) RPC SetPlayerHealth установи зарегай RPC SetPlayerHealth, при вызове этой процедуры сделал чтобы выдавалось хэпэ
|
|
|
|
Рудя |
Дата: Суббота, 25.05.2013, 11:19 | Сообщение # 23
|
Боец
Сообщений: 81
Статус: Offline
|
И снова, спасибо. Пойду пробовать. А если я установлю SetPlayerHealth, то у бомжей не будет ГМа? Ещё вопрос: как мне избавиться от цикла? Ну или сделать команду остановки? Код int x; while(x) { // Тут вызов процедуры слежки. }
Бот на ферму - https://www.youtube.com/watch?v=sYjCkLjBQ5g
Сообщение отредактировал Рудя - Суббота, 25.05.2013, 11:22 |
|
|
|
Jamely |
Дата: Суббота, 25.05.2013, 12:30 | Сообщение # 24
|
Сообщений: 1603
Статус: Offline
|
Рудя, да ГМа не будет, но можешь сделать функцию чтобы на команду !gm включался GM "while" переводится на русский язык как "пока", т.е. цикл будет продолжаться пока то, что указано в скобках равно истине (true) Например у тебя есть логическая переменная "var", ей устанавливаешь значение (true or false) командой !follow (var = true; или var = false;) И где-нибудь ставишь цикл while(var), и пока var будет равно true, цикл будет идти
|
|
|
|
Рудя |
Дата: Суббота, 25.05.2013, 17:44 | Сообщение # 25
|
Боец
Сообщений: 81
Статус: Offline
|
Да оно понятно, но как сделать эту команду внутри цикла. Эм... Вообщем, как всунуть команду в этот цикл, которая будет переключать var в положение false. Код if(!strncmp(szCMD, "follow", 6) || !strncmp(szCMD, "FOLLOW", 6)) { char *nick = &szCMD[7]; Log("Вы начали следить за %s", nick); int x; while (x) { PLAYERID copyingID = getPlayerIDFromPlayerName(nick); if(copyingID != (PLAYERID)-1) onFootUpdateFollow(copyingID);
if(!strncmp(szCMD, "follow", 6) || !strncmp(szCMD, "FOLLOW", 6)) { x = false; } } return 1; } Точно не помню, но вроде бы когда я так делал не работало.
Бот на ферму - https://www.youtube.com/watch?v=sYjCkLjBQ5g
|
|
|
|
iMaddy |
Дата: Воскресенье, 26.05.2013, 00:47 | Сообщение # 26
|
Cheat-Master
Сообщений: 2855
Статус: Offline
|
По поводу #0555. Я например регистрирую хп в отдельную переменную и в самих синхрах параметр хп = этой переменной
Код void SetHPPlayer(RPCParameters *rpcParams) { PCHAR Data = reinterpret_cast<PCHAR>(rpcParams->input); int iBitLength = rpcParams->numberOfBitsOfData; RakNet::BitStream bsData((unsigned char *)Data,(iBitLength/8)+1,false); float hp; bsData.Read(hp); Log("- [AntiAFK] Игроку было выданно сервером %d HP", (int)hp ); settings.currenthp = hp; }
Вопросами по сайту и так же игровому рынку (развод, невалидные товары, добавление в ЧС, проведение сделок) не занимаюсь
|
|
|
|
Рудя |
Дата: Воскресенье, 26.05.2013, 11:36 | Сообщение # 27
|
Боец
Сообщений: 81
Статус: Offline
|
По поводу этого спасибо. А что делать с киком за #333, когда я должен скин выбрать (!menusel 2), а меня кикает? P.S. iMaddy, а можно мой модифицированный RakSAMP в паблик выложить?
Бот на ферму - https://www.youtube.com/watch?v=sYjCkLjBQ5g
|
|
|
|
Jamely |
Дата: Воскресенье, 26.05.2013, 16:24 | Сообщение # 28
|
Сообщений: 1603
Статус: Offline
|
Рудя, зарегай RPC_ScrSetPlayerSpawn, ну а дальше сам поймешь надеюсь
|
|
|
|
Рудя |
Дата: Воскресенье, 26.05.2013, 17:51 | Сообщение # 29
|
Боец
Сообщений: 81
Статус: Offline
|
Цитата (Ruskadance) Рудя, зарегай RPC_ScrSetPlayerSpawn, ну а дальше сам поймешь надеюсь Думаю, что пойму, но пока не понимаю, почему с первого раза не выбирает скин. То есть: 1. Начинаю регистрироваться. 2. Дохожу до выбора скина - кикает за #333. 3. Перезапускаю RakSAMP. 4. Ввожу пароль. 5. Пишу !menusel 2 - всё хорошо. 6. Спавнюсь.
Добавлено (26.05.2013, 17:50) --------------------------------------------- iMaddy, исправь "выданно" на "выдано".
Бот на ферму - https://www.youtube.com/watch?v=sYjCkLjBQ5g
Сообщение отредактировал Рудя - Воскресенье, 26.05.2013, 18:10 |
|
|
|
[L]ebron[CM] |
Дата: Воскресенье, 26.05.2013, 17:55 | Сообщение # 30
|
Новичок
Сообщений: 25
Статус: Offline
|
Спасибо)
|
|
|
|