Я и PAWN | Изучаю, потому что интересно

Сообщения
225
Реакции
90
Помог
1 раз(а)
ThePhoenix, на не ASCII проверить символы можно найти байт вида 1ххххххх. Если именно рюзгэ букавы, то можно десятичный номер символа получить и диапазон(ы) проверить.
 
Сообщения
2,143
Реакции
1,223
Помог
44 раз(а)
Как нынче определяют, "ru" ник игрока или же "en"?
Появилась мыслишка изменять текст игроку в зависимости от того, на каком языке его ник написан, вот только не знаю, как это сделать :)

Каким модулем или нативом?:)
Слишком много гемороя ради бесполезной вещи.
 
Сообщения
225
Реакции
90
Помог
1 раз(а)
Вообще лучше не ник, а адрес проверять и по нему определять страну юзверя.
 
Сообщения
702
Реакции
54
А почему в хуке убийства может вылазить сервер, как аттакер? А то я пробовал и бомбой убиться, просто разбиться, с админки себя убить и т.д., но ни разу не получилось, чтоб сервер выступил аттакером, но зато в плагине ловлю ошибку на невалидный id, а при дебаге вижу, что сервер == аттакер..
Он (сервер) спокойно проходит проверки на коннект, на живого, на игрока, а не бота и т.д.
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
ThePhoenix,
Код:
@func(id) {
    
    new iTarget, iBody
    
    #define DISTANCE 600
    new Float:iDist = get_user_aiming(id, iTarget, iBody, DISTANCE)
    
    new szTargetName[32]
    get_user_name(iTarget, szTargetName, charsmax(szTargetName))
    
    client_print(id, print_chat, "szTargetName: %s | iTargetId: %d | iDist: %.0f", szTargetName, iTarget, iDist)
}
0 - это сервер. Выполнил не на игроке - iTarget = 0

Чтобы избежать этого, делают подобную проверку

if(iTarget != 0) { ... }
 
Сообщения
38
Реакции
8
А почему в хуке убийства может вылазить сервер, как аттакер?
Что 0 может значить в Pawn? В этом случае одно из 2х почему оно так. Сколько раз ты в теме натыкаешься на 0 как индекс =)))
 
Последнее редактирование:
Сообщения
702
Реакции
54
tapexapex, да я прекрасно понимаю, что 0 это сервер, вот только не пойму в какой момент он становиться аттакером и почему проходит проверку на живого.
CLUQA,
Код:
if(iAttacker == 0)
   return;
Не спасло)
 

d3m37r4

111111
Сообщения
1,430
Реакции
1,169
Помог
10 раз(а)
ThePhoenix, а ты уверен, что тебе прилетает индекс равный 0, а не -1?
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
d3m37r4, а в каких случаях может прилетать -1?
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
0 - это сервер. Выполнил не на игроке - iTarget = 0

Чтобы избежать этого, делают подобную проверку
Ничего общего с аттакером данный пример не имеет
7 Авг 2020
ThePhoenix, заглядывайте в исходники регейма хоть иногда
https://github.com/s1lentq/ReGameDLL_CS/blob/master/regamedll/dlls/player.cpp#L3095-L3104
https://github.com/s1lentq/ReGameDLL_CS/blob/master/regamedll/dlls/player.cpp#L954
https://github.com/s1lentq/ReGameDLL_CS/blob/master/regamedll/dlls/cbase.cpp#L700
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
fantom, разве 0 не является в том же Ham_Killed сервером?

Даже функция получающая индекс убийцы

native get_user_attacker(index, ...);

Возвращает: Attacker client index, a non-client entity or 0 if no attacker was found
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
CLUQA, get_user_aiming работает совсем по другому принципу, и ничего общего с убийством игрока не имеет.
https://github.com/alliedmodders/amxmodx/blob/master/amxmodx/amxmodx.cpp#L3168-L3169
7 Авг 2020
native get_user_attacker(index, ...);
Выше вы привели в пример get_user_aiming. get_user_attacker работает как и положено
https://github.com/alliedmodders/amxmodx/blob/master/amxmodx/amxmodx.cpp#L1167
7 Авг 2020
Еще примеры
https://github.com/s1lentq/ReGameDLL_CS/blob/master/regamedll/dlls/player.cpp#L5066
https://github.com/s1lentq/ReGameDLL_CS/blob/master/regamedll/dlls/player.cpp#L5236
ну и так далее по паттерну поиск
 
Сообщения
702
Реакции
54
d3m37r4, ну смотри, я дебажил при == 0 и в момент ошибки на невалидность и вылазил сервер с 0
Minni, этот вариант был последним, который я хотел попробовать и поставил на тест ещё до того, как написал. Жду, пока пропадут или появятся ошибки
7 Авг 2020
fantom, если бы ещё были понятны эти исходники ригейма.
7 Авг 2020
ThePhoenix, не?
#define is_user_valid(%1) (1 <= %1 <= MaxClients)
Проверив на валидность уже нет смысла проверять на Коннект, только на живого, правильно?
 
Сообщения
2,143
Реакции
1,223
Помог
44 раз(а)
ThePhoenix, убийца может быть мертвым. Например, кинуть гранату и умереть, а за собой еще и утянуть кого-то взрывом гранаты.
 
Сообщения
702
Реакции
54
Снова здарова))

Как мне узнать Entity index, если я хочу удалить с карт 35hp_* триггер удара и просто выдавать жизни плагином?
Узнать нужно, чтобы через remove_entity удалить.
 
Сообщения
1,668
Реакции
1,495
Помог
24 раз(а)

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу