Нужно подправить код, чутка помощи.

Xaкep Рабинович

Участник
Автор темы
63
5
Версия SA-MP
  1. 0.3.7-R3
Хотел сделать скрипт, который помешает серверу выдавать мне анимацию курения (когда в руке появляется сигара) чтобы на аризоне было удобнее восстанавливать хп в перестрелках. Не понимаю почему, скрипт работает, но после появления анимации сигареты его просто крашит.

Скрипт простой, вот его исходный код:
oldSetPedAnimation=setPedAnimation
function setPedAnimation(p,d,a,l,lo,up,f,dur)
if p==PLAYER_PED and d=="SMOKING" and a=="SMOKE_LOOP" then return end
oldSetPedAnimation(p,d,a,l,lo,up,f,dur)
end

Скрипт крашится после появления сигареты, Script terminated. (393C50D4)
Помогите пожалуйста, что не так?
 
  • Эм
Реакции: Corenale

Xaкep Рабинович

Участник
Автор темы
63
5
так просто сбивай Нажми на F и не будет сигареты или в сампфунксе 0afd:0
Во время перестрелки эта сигарета сбивает мне оружие, что очень сильно мешает в стрельбе.
 

Shelok_Kholmes

Известный
409
63

cherepash

Участник
37
32
Первое, что такое SMOKE_LOOP? В списках анимации я не увидел этого...

1738856388105.png


Так и проблема скорее всего с тем что у тебя анимацию ищет SMOKE_LOOP, которую я не нашел в списках анимок и из-за этого скрипт и погибает...

Дальше, в чем проблема сбивать анимацию?

lua:
    if isCharPlayingAnim(PLAYER_PED, "хз что сюда ибо не увидел", "SMOKING") then
        clearCharTasksImmediately(PLAYER_PED) freezeCharPosition(PLAYER_PED, false) setPlayerControl(player, true)

По типу такого...
Ну или просто останавливать анимацию, а не сбивать...

1738856604654.png

 
Последнее редактирование:

Xaкep Рабинович

Участник
Автор темы
63
5
Нажми на F когда у тебя сигарета и все
приятель, ты не знаешь как на аризоне курение работает? когда ты закуриваешь там сигарету, она ещё около минуты у тебя каждые секунд 5-10 появляется в руке, даже если ты собьёшь её один раз, она появится снова и снова. мне было бы крайне удобно юзануть /smoke и эту минуту бегать стреляться, но нет, каждые 5-10 секунд будет появляться сигарета и сбивать мне оружие.
Дальше, в чем проблема сбивать анимацию?
ответ такой же, чуть выше. анимация повторяется многократно, и сбивать её приходится не единожды, а анимация сигареты не даёт возможность взять оружие, вот такая механика сампа. представь ситуацию, ты на военку зашёл стреляться, и решил использовать сигарету чтобы здоровье восстанавливалось, но вот незадача, пока ты стреляешься, то каждые 10 секунд у тебя появляется сигарета и тебе её надо успеть сбить, прекратив стрельбу.
Первое, что такое SMOKE_LOOP? В списках анимации я не увидел этого...
может быть это типа системная анимация когда у тебя в руке сигарета?

Первое, что такое SMOKE_LOOP? В списках анимации я не увидел этого...

Посмотреть вложение 263211

Так и проблема скорее всего с тем что у тебя анимацию ищет SMOKE_LOOP, которую я не нашел в списках анимок и из-за этого скрипт и погибает...

Дальше, в чем проблема сбивать анимацию?

lua:
    if isCharPlayingAnim(PLAYER_PED, "хз что сюда ибо не увидел", "SMOKING") then
        clearCharTasksImmediately(PLAYER_PED) freezeCharPosition(PLAYER_PED, false) setPlayerControl(player, true)

По типу такого...
Ну или просто останавливать анимацию, а не сбивать...

Посмотреть вложение 263212
друг, я не шарю за скрипты так хорошо чтобы это сделать. помоги пожалуйста, ты в этом понимаешь вроде, подправь мой скрипт так чтобы он не давал серверу возможности подсунуть мне анимку сигареты :)
 
Последнее редактирование:

cherepash

Участник
37
32
приятель, ты не знаешь как на аризоне курение работает? когда ты закуриваешь там сигарету, она ещё около минуты у тебя каждые секунд 5-10 появляется в руке, даже если ты собьёшь её один раз, она появится снова и снова. мне было бы крайне удобно юзануть /smoke и эту минуту бегать стреляться, но нет, каждые 5-10 секунд будет появляться сигарета и сбивать мне оружие.

ответ такой же, чуть выше. анимация повторяется многократно, и сбивать её приходится не единожды, а анимация сигареты не даёт возможность взять оружие, вот такая механика сампа. представь ситуацию, ты на военку зашёл стреляться, и решил использовать сигарету чтобы здоровье восстанавливалось, но вот незадача, пока ты стреляешься, то каждые 10 секунд у тебя появляется сигарета и тебе её надо успеть сбить, прекратив стрельбу.

может быть это типа системная анимация когда у тебя в руке сигарета?


друг, я не шарю за скрипты так хорошо чтобы это сделать. помоги пожалуйста, ты в этом понимаешь вроде, подправь мой скрипт так чтобы он не давал серверу возможности подсунуть мне анимку сигареты :)
Так, эта анимка проигрывается после использования сиги из 24/7 или откуда?
 

cherepash

Участник
37
32
ожидай

Так...
Ну самое главное проверка у тебя должна быть на эту анимацию
if isCharPlayingAnim(PLAYER_PED, "SMKCIG_PRTL", "GANGS") then
Мул можно и так делать:
lua:
        if isCharPlayingAnim(PLAYER_PED, "SMKCIG_PRTL", "GANGS") then
            print("smoke")
            clearCharTasksImmediately(PLAYER_PED) freezeCharPosition(PLAYER_PED, false) setPlayerControl(player, true)
        end
 
Последнее редактирование:

Xaкep Рабинович

Участник
Автор темы
63
5
ожидай

Так...
Ну самое главное проверка у тебя должна быть на эту анимацию

Мул можно и так делать:
lua:
        if isCharPlayingAnim(PLAYER_PED, "SMKCIG_PRTL", "GANGS") then
            print("smoke")
            clearCharTasksImmediately(PLAYER_PED) freezeCharPosition(PLAYER_PED, false) setPlayerControl(player, true)
        end
то есть, как я понял, анимация SMKCIG_PRTL и GANGS - это ликвид, а SMOKE_LOOP и SMOKING - неликвид, и в samp lua такой вообще не существует?

P.S. я так не совсем и понял, у тебя получилось наладить скрипт, или нам ещё предстоит с ним повозиться?
 

cherepash

Участник
37
32
Смотри, SMOKE_LOOP и SMOKING это хлам, такой анимации в сампе нету.
При курении используется эта анимация SMKCIG_PRTL и GANGS (на аризоне точно)

lua:
function main()
    while not isSampAvailable() do
        wait(1000)
    end
    while true do wait(0)
        if isCharPlayingAnim(PLAYER_PED, "SMKCIG_PRTL", "GANGS") then
            taskPlayAnim(playerPed, "HANDSUP", "PED", 4.0, false, false, false, false, 4)
        end
    end
end

Но я не понял как остановить анимацию... Из скрина который я давал выше

1738874905704.png


Перебивать анимку курения быстрой анимкой поднятия рук, при ctrl\лкм нажатии быстром она чуть ли не моментальная

ЛИБО

lua:
function main()
    while not isSampAvailable() do
        wait(1000)
    end
    while true do wait(0)
        if isCharPlayingAnim(PLAYER_PED, "SMKCIG_PRTL", "GANGS") then
            clearCharTasksImmediately(PLAYER_PED) freezeCharPosition(PLAYER_PED, false) setPlayerControl(player, true)
        end
    end
end

Это уже как сбив на R выглядит...

Этого кода хватает с головой для сбива твоего курения.
 

Xaкep Рабинович

Участник
Автор темы
63
5
Смотри, SMOKE_LOOP и SMOKING это хлам, такой анимации в сампе нету.
При курении используется эта анимация SMKCIG_PRTL и GANGS (на аризоне точно)

lua:
function main()
    while not isSampAvailable() do
        wait(1000)
    end
    while true do wait(0)
        if isCharPlayingAnim(PLAYER_PED, "SMKCIG_PRTL", "GANGS") then
            taskPlayAnim(playerPed, "HANDSUP", "PED", 4.0, false, false, false, false, 4)
        end
    end
end

Но я не понял как остановить анимацию... Из скрина который я давал выше

Посмотреть вложение 263238

Перебивать анимку курения быстрой анимкой поднятия рук, при ctrl\лкм нажатии быстром она чуть ли не моментальная

ЛИБО

lua:
function main()
    while not isSampAvailable() do
        wait(1000)
    end
    while true do wait(0)
        if isCharPlayingAnim(PLAYER_PED, "SMKCIG_PRTL", "GANGS") then
            clearCharTasksImmediately(PLAYER_PED) freezeCharPosition(PLAYER_PED, false) setPlayerControl(player, true)
        end
    end
end

Это уже как сбив на R выглядит...

Этого кода хватает с головой для сбива твоего курения.
сори что я всё такой не понятливый, но мне нужно опять уточнить. мне нужен был скрипт который не собьёт анимку, а в принципе удалит её для меня визуально. например если выпить /beer, то в руке появится бутылка, и там та же методика, при атаке персонаж будет пить пиво, ну в общем самповские анимки. суть то в том что я хотел в принципе, чтобы никакая сигарета и помеха от неё в следствии, вообще не происходили.

как мне показалось, твой скрипт просто собьёт анимацию мгновенно, но это всё же не то, плюс могут и варн дать. возможно в теории сделать скрипт, при котором я закурю /smoke, в чате будет писаться мол "стряхнул пепел", и т.п, но сигарета в руке появляться не будет?

Смотри, SMOKE_LOOP и SMOKING это хлам, такой анимации в сампе нету.
При курении используется эта анимация SMKCIG_PRTL и GANGS (на аризоне точно)

lua:
function main()
    while not isSampAvailable() do
        wait(1000)
    end
    while true do wait(0)
        if isCharPlayingAnim(PLAYER_PED, "SMKCIG_PRTL", "GANGS") then
            taskPlayAnim(playerPed, "HANDSUP", "PED", 4.0, false, false, false, false, 4)
        end
    end
end

Но я не понял как остановить анимацию... Из скрина который я давал выше

Посмотреть вложение 263238

Перебивать анимку курения быстрой анимкой поднятия рук, при ctrl\лкм нажатии быстром она чуть ли не моментальная

ЛИБО

lua:
function main()
    while not isSampAvailable() do
        wait(1000)
    end
    while true do wait(0)
        if isCharPlayingAnim(PLAYER_PED, "SMKCIG_PRTL", "GANGS") then
            clearCharTasksImmediately(PLAYER_PED) freezeCharPosition(PLAYER_PED, false) setPlayerControl(player, true)
        end
    end
end

Это уже как сбив на R выглядит...

Этого кода хватает с головой для сбива твоего курения.
Теоретически, а можно ли в принципе удалить эту анимацию курения следующим кодом?:

function main()
while not isSampAvailable() do
wait(1000)
end

while true do
wait(0)
if isCharPlayingAnim(PLAYER_PED, "SMKCIG_PRTL", "GANGS") then
blockCharAnim(PLAYER_PED, "SMKCIG_PRTL", "GANGS", true)
end
end
end
 
Последнее редактирование:

cherepash

Участник
37
32
сори что я всё такой не понятливый, но мне нужно опять уточнить. мне нужен был скрипт который не собьёт анимку, а в принципе удалит её для меня визуально. например если выпить /beer, то в руке появится бутылка, и там та же методика, при атаке персонаж будет пить пиво, ну в общем самповские анимки. суть то в том что я хотел в принципе, чтобы никакая сигарета и помеха от неё в следствии, вообще не происходили.

как мне показалось, твой скрипт просто собьёт анимацию мгновенно, но это всё же не то, плюс могут и варн дать. возможно в теории сделать скрипт, при котором я закурю /smoke, в чате будет писаться мол "стряхнул пепел", и т.п, но сигарета в руке появляться не будет?


Теоретически, а можно ли в принципе удалить эту анимацию курения следующим кодом?:

function main()
while not isSampAvailable() do
wait(1000)
end

while true do
wait(0)
if isCharPlayingAnim(PLAYER_PED, "SMKCIG_PRTL", "GANGS") then
blockCharAnim(PLAYER_PED, "SMKCIG_PRTL", "GANGS", true)
end
end
end
Ну... Ты можешь не теоретически делать, а проверять.
Только у меня вопрос, ты сам эту функцию придумал?:
По логике это гениально, а на деле это пустышка, как и SMOKE_LOOP
 
  • Клоун
Реакции: XRLM

Xaкep Рабинович

Участник
Автор темы
63
5
Ну... Ты можешь не теоретически делать, а проверять.
Только у меня вопрос, ты сам эту функцию придумал?:

По логике это гениально, а на деле это пустышка, как и SMOKE_LOOP
а разве такой не существует? ну скажи ты пожалуйста, можно как-то предотвратить появление анимации насовсем, а не сделать автоматический сбив за который я отлечу?