[Разработка] SAMP UDF | Дорабатываем вместе! | От 04.02.2018 - Страница 18 - Форум Cheat-Master.ru
Модератор форума: Sanoxxx, Alowir, Phoenixxx_Czar  
[Разработка] SAMP UDF | Дорабатываем вместе! | От 04.02.2018
belyankin12 Дата: Вторник, 01.08.2017, 16:42 | Сообщение # 256
Боец
Сообщений: 69
Статус: Offline
Отличный UDF. Но есть проблемы с функцией getLastDamagePed(ByRef Ped := "", ByRef Weapon := ""). Как она работает и что возвращает? В описании описано что возвращает id и посмотрев код видно, что возвращает ID, но мне непонятно какие аргументы указывать..
CZAR Дата: Вторник, 01.08.2017, 23:36 | Сообщение # 257
Czar Of Scripts
Сообщений: 1373
Статус: Offline
belyankin12, Можешь не чего не указывать. Покажет роде кто кого убил или что-то такое.

Добавлено (01.08.2017, 23:36)
---------------------------------------------
Вот новая функа для чека в зоне стрима, раньше я ее выкладывал под названием isPlayerStreamebyid(id, dist), но она не всегда определяла, теперь выкладываю новую функу называется она isPlayerInStreamById(player_id [, dist]), которая имеет больше преимуществ над старой. Дабы сохранить всю табуляцию я залил весь код на сайт, где она сохраняется.
Объясню как пользоваться. Например нам нужно проверить есть ли в указанном радиусе(по стандарту радиус равен 150) ид 30 мы делаем код:

Код

!1:: ; бинд на alt + 1
check := isPlayerInStreamById(30)
if (check) ; Если функция выдала 1
    addChatMessage("Ид 30 находится в зоне стрима")
else if (!check) ; Если выдала 0
    addChatMessage("Ид 30 НЕ находится в зоне стрима")
return

А теперь представим что нужно узнать кто в строю по финду, в этом на поможет массив и представим что в диалоге пишет вот по такой форме:
Ник[ИД] `t #Ранг
Код:

Код
!2:: ; бинд на alt + 2
SendChat("/find")
Time := A_TickCount
while(!isDialogOpen()) ; ждем открытия диалога ровно 2 секунды, иначе пишем ошибку
{
    if(A_TickCount - Time > 2000)
    {
  addChatMessageEx("00FF00", "Диалог не открылся за 2 секунды `;( Повторите попытку!")
  return
    }
}
di := getDialogLines() ; берем все строки в массив di
Send, {ESC} ; Закроем диалог

ids := [] ; обнуляем массив с идами
for k, v in di ; начнем проверять каждую строку в диалоге
{
    if (RegExMatch(v, ".*\[([0-9]{1,3})\]\s+(\d+)", out)) ; Проверяем строку регуляркой
    {
  ids[A_Index] := out1 ; заносим в массив ид из диалога
    }
}
    
number := isPlayerInStreamById(ids) ; указываем наш массив как ид

if (!number) ; Если не кого в радиусе 150 нету, то показываем сообщение
{
    addChatMessageEx("00FF00", "Не кого в указанном радиусе нету!")
}
else
{
    for k, v in number ; поверяем полученный массив
    {
  ; k (ид) | v (0 - Не в  радиусе, 1 - В радиусе)
  if (v)
   addChatMessageEx("00FF00", getplayernamebyid(k) "[" k "] Находиться в указанном радиусе")
  else
   addChatMessageEx("00FF00", getplayernamebyid(k) "[" k "] Не находиться в указанном радиусе")
    }
}
return


Ссылка на полный код с табуляцией и примерами





Я в ВК
Ушел в веб.

• Ничего не покупаю.
• Способы не проверяю.


У меня теперь новый домен, если ссылка не работает - напишите.

Гарант Cheat-Master:
*тема*

AHK
[S-RP] House Finder / House Teleporter
[SAMP] Online Counter
[S-RP] [For Event] Show Star
[S-RP] AntiCasino
[S-RP] [BOT] Auto Fisher + Auto Find Worm + Auto Cook
[S-RP] [BOT] /dance
Winner | Делаем розыгрыши среди участников темы.
SAMP-UDF
[AHK Урок] Выбор в диалогах мышкой и enter`ом
[SAMP] Быстрый ответ на СМС
[ERP] Помощник для адвоката
[DRP] FakeTime

Достижения:
- 26.02.2017
- 03.01.2018
- 26.05.2018
- 22.09.2018
- 04.04.2019
belyankin12 Дата: Среда, 02.08.2017, 09:35 | Сообщение # 258
Боец
Сообщений: 69
Статус: Offline
Мне нужен пример, вот мой код, он не работает:
Код
command_who:
getLastDamagePed()
addmessagetochatwindow2("{FF0000}", "[AHK]: {FFFAFA} Тебя дамажил последним: " . getplayernamebyid(ped) . " с оружия: " . weapon . "")
return

Использовал код с примера в этой теме, тоже не работает.

Если приравнять к функции переменную (var := getLastDamagePed()) тоже не работает.


Сообщение отредактировал belyankin12 - Среда, 02.08.2017, 09:36
[CM]DonHomka Дата: Среда, 02.08.2017, 10:18 | Сообщение # 259
Любитель
Сообщений: 39
Статус: Offline
Phoenixxx_Czar, привет. Неплохо. Для более удобного процесса лучше ретурнить расстояние между игроком и актером или добавить необязательный параметр ByRef возвращающий расстояние между игроками. Себе сам реализую, а вы подумайте)

Добавлено (02.08.2017, 10:18)
---------------------------------------------
belyankin12,
Код
getLastDamagePed(Ped, weapon)
addChatMessage(Ped " : " weapon)

Тип ByRef делает входящие аргументы обратными. Тоесть записывает в указанные переменные данные.


Сообщение отредактировал [CM]DonHomka - Среда, 02.08.2017, 10:19
Staticho Дата: Среда, 02.08.2017, 14:31 | Сообщение # 260
Новичок
Сообщений: 6
Статус: Offline
Почему на некоторых серверах данная функция не работает?
getLastDamagePed(Ped, weapon)
CZAR Дата: Среда, 02.08.2017, 19:22 | Сообщение # 261
Czar Of Scripts
Сообщений: 1373
Статус: Offline
[CM]DonHomka, Ну не знаю, создавалось оно просто для чека, а не узнавания расстояния biggrin Ну можно по сути, но не знаю smile




Я в ВК
Ушел в веб.

• Ничего не покупаю.
• Способы не проверяю.


У меня теперь новый домен, если ссылка не работает - напишите.

Гарант Cheat-Master:
*тема*

AHK
[S-RP] House Finder / House Teleporter
[SAMP] Online Counter
[S-RP] [For Event] Show Star
[S-RP] AntiCasino
[S-RP] [BOT] Auto Fisher + Auto Find Worm + Auto Cook
[S-RP] [BOT] /dance
Winner | Делаем розыгрыши среди участников темы.
SAMP-UDF
[AHK Урок] Выбор в диалогах мышкой и enter`ом
[SAMP] Быстрый ответ на СМС
[ERP] Помощник для адвоката
[DRP] FakeTime

Достижения:
- 26.02.2017
- 03.01.2018
- 26.05.2018
- 22.09.2018
- 04.04.2019
belyankin12 Дата: Пятница, 04.08.2017, 08:41 | Сообщение # 262
Боец
Сообщений: 69
Статус: Offline
[CM]DonHomka, сейчас попробую.
DECODE Дата: Пятница, 04.08.2017, 13:17 | Сообщение # 263
Coder
Сообщений: 189
Статус: Offline
Неплохой плагин, еще бы командный движок, и вообще было бы офигенно.

► Оптимизация SCM / SMTA (pawn): http://cheat-master.ru/forum/117-706531-1
► CM Smiles - Mini Chat (v1.0): http://cheat-master.ru/forum/2-706062-1
► [Evolve-RP] - Баг на деньги (история тестера): http://cheat-master.ru/forum/282-709301-1
► Накрутка сообщений в ВКонтакте (new): http://cheat-master.ru/forum/199-709369-1
belyankin12 Дата: Пятница, 04.08.2017, 14:50 | Сообщение # 264
Боец
Сообщений: 69
Статус: Offline
[CM]DonHomka, про ByRef полезная информация, как раз одну из моих проблем решила, спасибо. А функция не работает. По мне сделал один выстрел с дигла персонаж (повредил броню мне), функция возвращает пустые значения. Думал что из-за брони дело, снял броню, теперь выстрелом мне сняло ХП, все равно пустота.
Coockie Дата: Пятница, 04.08.2017, 18:57 | Сообщение # 265
Новичок
Сообщений: 27
Статус: Offline
Phoenixxx_Czar, не проще ли:
Код

is_object(numbers)

?
CZAR Дата: Пятница, 04.08.2017, 20:06 | Сообщение # 266
Czar Of Scripts
Сообщений: 1373
Статус: Offline
Coockie, А разница?




Я в ВК
Ушел в веб.

• Ничего не покупаю.
• Способы не проверяю.


У меня теперь новый домен, если ссылка не работает - напишите.

Гарант Cheat-Master:
*тема*

AHK
[S-RP] House Finder / House Teleporter
[SAMP] Online Counter
[S-RP] [For Event] Show Star
[S-RP] AntiCasino
[S-RP] [BOT] Auto Fisher + Auto Find Worm + Auto Cook
[S-RP] [BOT] /dance
Winner | Делаем розыгрыши среди участников темы.
SAMP-UDF
[AHK Урок] Выбор в диалогах мышкой и enter`ом
[SAMP] Быстрый ответ на СМС
[ERP] Помощник для адвоката
[DRP] FakeTime

Достижения:
- 26.02.2017
- 03.01.2018
- 26.05.2018
- 22.09.2018
- 04.04.2019
Staticho Дата: Суббота, 05.08.2017, 20:06 | Сообщение # 267
Новичок
Сообщений: 6
Статус: Offline
Почему на некоторых серверах данная функция не работает?
getLastDamagePed(Ped, weapon)
[CM]MurKotik Дата: Понедельник, 07.08.2017, 01:40 | Сообщение # 268
Murkot Develop
Сообщений: 252
Статус: Offline
Phoenixxx_Czar,+
MrGPro, +


-------------------

Ушёл в себя, вернусь поздно и пьяный!
aknqkzxlcs_21 Дата: Среда, 09.08.2017, 13:21 | Сообщение # 269
Боец
Сообщений: 57
Статус: Offline
Примечание: строка чата начинается с нуля, параметр line может быть от 0 до 99
getChatLineColor(line, isHex) // возвращает цвет строки
setChatLineColor(color, line) // установить цвет строки
getChatLineTimestamp(line, isUnixtime) // возвращает временную отметку строки чата
setChatLineTimestamp(timestamp, line) // установить время для строки чата (только в формате unixtime, также можно использовать инкремент и декремент)

Примеры использования:


Код
getChatLineColor(line := 0, isHex := true) {
    ; 0x152 - offset for first message
    ; 0xFC - size of a full message
    ; 0xD4 - size of a string message
    ; 99 - max count of a messages
    if(!checkHandles())
        return -1
    dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_CHATMSG_PTR)
    if ErrorLevel
        return -1
    clAddress := dwAddress + 0x152 + ((99-line) * 0xFC) + 0xD4
    if ErrorLevel
        return -1
    color := readMem(hGTA, clAddress, 3, "byte")
    if ErrorLevel
        return -1
    if isHex
        return inttohex(color)
    return color
}

setChatLineColor(color, line := 0) {
    if(!checkHandles())
        return false
    if color is not integer
    {
        while(substr(color, 1, 1) == "0")
            color := substr(color, 2)
        color := "0x" color
        if strlen(color) != 8
            return false ; разрешено 3 байта (6 символов + 2 это 0x)
    } else if(color > 16777215)
        return false ; цвет не может превышать 3 байта
    dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_CHATMSG_PTR)
    if ErrorLevel
        return false
    clAddress := dwAddress + 0x152 + ((99-line) * 0xFC) + 0xD4
    if ErrorLevel
        return false
    writeMemory(hGTA, clAddress, color, 3, "byte")
    if ErrorLevel
        return false
    sendinput {f7 3} ; 3 - без соба, 4 - есть собейт
    return true
}

getChatLineTimestamp(line := 0, unixtime := true) {
    ; 0x152 - offset for first message
    ; 0xFC - size of a full message
    ; 0x20 - offset from timestamp to message
    ; 99 - max count of a messages
    if(!checkHandles())
        return -1
    dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_CHATMSG_PTR)
    if ErrorLevel
        return -1
    tsAddress := dwAddress + 0x152 + ((99-line) * 0xFC) - 0x20
    if ErrorLevel
        return -1
    timestamp := readMem(hGTA, tsAddress, 4, "int")
    if ErrorLevel
        return -1
    ; timestamp += (A_Now - A_NowUTC)
    if unixtime
        return timestamp
    s = 1970
    s += timestamp,s
    ; return [ substr(s, 1, 4), substr(s, 5, 2), substr(s, 7, 2), substr(s, 9, 2), substr(s, 11, 2), substr(s, 13, 2) ] ; [Y,M,D,HH,MM,SS]
    return [ substr(s, 9, 2) , substr(s, 11, 2) , substr(s, 13, 2) , substr(s, 7, 2) , substr(s, 5, 2) , substr(s, 1, 4) ] ; [HH,MM,SS,D,M,Y]
}

setChatLineTimestamp(timestamp, line := 0) {
    if(!checkHandles())
        return false
    if timestamp is float
        timestamp := floor(timestamp)
    if substr(timestamp, 1, 1) == "+" or substr(timestamp, 1, 1) == "-"
        timestamp := getChatLineTimestamp(line) + timestamp
    if timestamp is not integer
        return false
    dwAddress := readDWORD(hGTA, dwSAMP + ADDR_SAMP_CHATMSG_PTR)
    if ErrorLevel
        return false
    tsAddress := dwAddress + 0x152 + ((99-line) * 0xFC) - 0x20
    if ErrorLevel
        return false
    writeMemory(hGTA, tsAddress, timestamp, 4, "int")
    if ErrorLevel
        return -1
    sendinput {f7 3} ; 3 - без соба, 4 - есть собейт
    return true
}


Сообщение отредактировал aknqkzxlcs_21 - Четверг, 10.08.2017, 00:11
CZAR Дата: Суббота, 12.08.2017, 09:06 | Сообщение # 270
Czar Of Scripts
Сообщений: 1373
Статус: Offline
Определяет расстояние между координатами в 2D пространстве (X и Y).
Эта функа просто переделана из 3D координат, так как нужно было smile

getDist2D(pos1, pos2)
{
if(!pos1 || !pos2)
return 0
return Sqrt((pos1[1]-pos2[1])*(pos1[1]-pos2[1])+(pos1[2]-pos2[2])*(pos1[2]-pos2[2]))
}





Я в ВК
Ушел в веб.

• Ничего не покупаю.
• Способы не проверяю.


У меня теперь новый домен, если ссылка не работает - напишите.

Гарант Cheat-Master:
*тема*

AHK
[S-RP] House Finder / House Teleporter
[SAMP] Online Counter
[S-RP] [For Event] Show Star
[S-RP] AntiCasino
[S-RP] [BOT] Auto Fisher + Auto Find Worm + Auto Cook
[S-RP] [BOT] /dance
Winner | Делаем розыгрыши среди участников темы.
SAMP-UDF
[AHK Урок] Выбор в диалогах мышкой и enter`ом
[SAMP] Быстрый ответ на СМС
[ERP] Помощник для адвоката
[DRP] FakeTime

Достижения:
- 26.02.2017
- 03.01.2018
- 26.05.2018
- 22.09.2018
- 04.04.2019
Поиск:
Статистика Форума