можно пример?Выполняется определенное количество раз.
В справке SB все написано о циклах.можно пример?
FOR 0@ = 0 TO 420 [STEP = 1]
0B78: log "%d" 0@
END
неужели так сложно сохранять в свой массив эти самые 3д тексты и при их уничтожении, так же удалять из массивакрч, как я понял хук получает все тексты со всего сервера, что пиздец как херово, я хочу например что бы выводились в чат только те возле которых я в радиусе 50 метров..
Но в итоге, я заебался чёт думать как бы его так сделать, вот допустим код ниже, как он работает, я например даже подойду к 3d тексту, о нем мне в чат не отобразит инфы, если зайти в интерьер и выйти - сразу же появится инфа, я хз почему так, то есть он как что ли отображается только когда ты не в вирт мире, или инте, это меня немного настораживает...
кароче подскажите, как мне отображать инфу о 3D тексте, в цикле, то есть я хочу получать каждую секунду инфу о этом тексте, но эта инфа как минимум не каждую секунду получается, и вообще со всего сервера все 3d тексты собирает, что мне вообще не нужно.
Можно ли как-то это обойти?)
Код:{$CLEO .cs} {$INCLUDE SF} 0000: repeat wait 150 until 0afa: 0BE3: raknet setup_incoming_rpc_hook @DHOOK 0B34: samp register_client_command "test" to_label @cmd while true wait 0 end :cmd if 23@ == 0 then 23@ = 1 chatmsg "активатед" -1 else chatmsg "деактеватед" -1 23@ = 0 end SAMP.CmdRet() :DHOOK if 23@ == 1 then 0BE5: raknet 0@ = get_hook_param PARAM_PACKETID if 0@ == RPC_SCRCREATE3DTEXTLABEL then 0BE5: raknet 1@ = get_hook_param PARAM_BITSTREAM 0BE7: raknet 2@ = bit_stream_read 1@ type BS_TYPE_SHORT 0BE7: raknet 3@ = bit_stream_read 1@ type BS_TYPE_INT 0BE7: raknet 4@ = bit_stream_read 1@ type BS_TYPE_FLOAT // x 0BE7: raknet 5@ = bit_stream_read 1@ type BS_TYPE_FLOAT // y 0BE7: raknet 6@ = bit_stream_read 1@ type BS_TYPE_FLOAT 0BE7: raknet 7@ = bit_stream_read 1@ type BS_TYPE_FLOAT 0BE7: raknet 8@ = bit_stream_read 1@ type BS_TYPE_BYTE 0BE7: raknet 9@ = bit_stream_read 1@ type BS_TYPE_SHORT 0BE7: raknet 10@ = bit_stream_read 1@ type BS_TYPE_SHORT alloc 11@ 1024 0C11: memset 11@ 0 1024 0BF4: raknet bit_stream 1@ decode_string 11@ size 1023 if 0C29: 20@ = stristr string1 11@ string2 "Владелец" then 00A0: store_actor $PLAYER_ACTOR position_to 12@ 13@ 14@ 0509: 17@ = distance_between_XY 12@ 13@ and_XY 4@ 5@ if 17@ < 50.0 then chatmsg "---------------------------------------------------" -1 chatmsg "%s" 3@ 11@ chatmsg "---------------------------------------------------" -1 free 11@ end end end end 0BE0: raknet hook_ret true
а что если юзать Rpc update 3dtext (вместо create 3dtext, то есть я так понимаю отвечает за обновление уже созданного 3D текста , вот мне это и нужно посути, если текст обновится - выполнить действия, не подскажешь структуру этого rpc? ну или хотя бы из каких параметров состоит.неужели так сложно сохранять в свой массив эти самые 3д тексты и при их уничтожении, так же удалять из массива
а чтоб потом читать в цикле + радиусе, то нужно просто пройтись по своему массиву
update 3d text приходит вроде как когда уже существующий 3д текст меняется, а не когда он появляется в стримеа что если юзать Rpc update 3dtext (вместо create 3dtext, то есть я так понимаю отвечает за обновление уже созданного 3D текста , вот мне это и нужно посути, если текст обновится - выполнить действия, не подскажешь структуру этого rpc? ну или хотя бы из каких параметров состоит.
*ну на крайняк, идея с массивом збс, я чет и не подумал
мне по сути это и нужно.update 3d text приходит вроде как когда уже существующий 3д текст меняется, а не когда он появляется в стриме
дампни через раклогер рпц и посмотри чё таммне по сути это и нужно.
Пиздец, конкретнее вопрос плиз.Можно ли как-то проверить есть ли оружие у персонажа?
никак не отреагирует, с чего это сервер вообще должен реагировать на этот опкод?Пиздец, конкретнее вопрос плиз.
Офк, можно. Если ты про своего актера.
Так же можно, если ты про другого игрока, точно знаю, что можно узнать, если он в твоей зоне стрима и держит определенное оружие в руках, если он просто в зоне стрима, то не уверен.
Опкоды:
0491: actor $PLAYER_ACTOR has_weapon 46 - должен проверять, имеет ли актер это оружие вообще при себе(не знаю, как сервер отреагирует на подобный запрос информации)
02D8: actor $PLAYER_ACTOR current_weapon == 28 - проверяет, держит ли в руках актер, определенное оружие.
имхо, информация о наличии оружия у игрока в кобуре(типо в слоте оружия каком-то) - серверная и чтоб получить ее нужно иметь доступ ? Мы же не можем получить количество денег у игрока. Мб сравнение не совсем подходящее, но все таки.никак не отреагирует, с чего это сервер вообще должен реагировать на этот опкод?
while true
wait 0
alloc 0@ 128
0B75: samp get_chat_string 99 text_to 0@ prefix_to 1@ color_to 21@ prefix_color_to 22@
if 0C18: 5@ = strstr string1 0@ string2 "Материалов: 10000/10000"
then
Actor.StorePos(1 3@ 4@ 5@)
3@ -= 10.0
4@ -= 10.0
Actor.PutAt(1 3@ 4@ 5@)
free 0@
end
end
ну ты сам ответил на свой вопрос, в логе чата сампа скопируй эту строку и вставь со всеми символамиПочему не проверяет, как нужно ? Строка выводиться не мною, а сервером. Так же строка не стандартного цвета.
CLEO:while true wait 0 alloc 0@ 128 0B75: samp get_chat_string 99 text_to 0@ prefix_to 1@ color_to 21@ prefix_color_to 22@ if 0C18: 5@ = strstr string1 0@ string2 "Материалов: 10000/10000" then Actor.StorePos(1 3@ 4@ 5@) 3@ -= 10.0 4@ -= 10.0 Actor.PutAt(1 3@ 4@ 5@) free 0@ end end
if 0AB0: 80
then
while 0AB0: 80
wait 0
end
Actor.StorePos($Player_Actor, 0@, 1@, 2@)
Actor.PutAt($Player_Actor, - - -)
wait 500
Actor.PutAt($Player_Actor, - - -)
if 02D8: Actor $PLAYER_ACTOR current_weapon == 24
then
Actor.PutAt($Player_Actor, - - -)
end
wait 500
Actor.PutAt($Player_Actor, 0@, 1@, 2@)