Jump to content

Общий мини "HELP ME" топик по скриптингу


Recommended Posts

Немного возращаясь назад ! Вот этот скипт

function Countdown ( source ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage (305,119,250,190,"images/3.png",false) 
    setTimer ( Countdown2, 1000, 1 ) 
end 
function Countdown2 ( source ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage(305,119,250,190,"images/2.png",false) 
    setTimer ( Countdown1, 1000, 1 ) 
end 
function Countdown1 ( source ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage(305,119,250,190,"images/1.png",false) 
    setTimer ( Countdown0, 1000, 1 ) 
end 
function Countdown0 ( source ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage(305,119,320,81,"images/go.png",false) 
    setTimer ( CountdownEnd, 3000, 1 ) 
end 
function CountdownEnd ( source ) 
    guiSetVisible ( imagecount, false ) 
end 
addCommandHandler ( "countdown", Countdown ) 

я переделал

Marker = createMarker(-1652.9, -160.4, 1, 'cylinder', 30.0, 0, 255, 0, 500) 
  
function Countdown ( thePlayer ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage (305,119,250,190,"images/3.png",false) 
    setTimer ( Countdown2, 1000, 1 ) 
end 
function Countdown2 ( thePlayer ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage(305,119,250,190,"images/2.png",false) 
    setTimer ( Countdown1, 1000, 1 ) 
end 
function Countdown1 ( thePlayer ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage(305,119,250,190,"images/1.png",false) 
    setTimer ( Countdown0, 1000, 1 ) 
end 
function Countdown0 ( thePlayer ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage(305,119,320,81,"images/go.png",false) 
    setTimer ( CountdownEnd, 3000, 1 ) 
end 
function CountdownEnd ( thePlayer ) 
    guiSetVisible ( imagecount, false ) 
end 
addCommandHandler ( "countdown", Countdown ) 
bindKey ( "=", "down", Countdown ) 
  
addEventHandler ( "onClientMarkerHit", getRootElement(), Countdown ) 

но вот в чём проблема если один человек зайдёт на маркер то Countdown видят все игроки а должен только тот кто зашол на маркер в чем проблема????

Link to comment

нужно проверять, должно быть thePlayer == localPlayer

вообще все можно в 1 функцию свернуть. и раз уж создаются элементы каждый раз, то вместо guiSetVisible лучше юзать destroyElement.

Link to comment

562141, Твой Countdown, не самый оптимальный вариант.

Я вот тут набросал тебе, как было бы более правильно сделать. (Не утверждаю, что данный вариант самый правильный)

Если хочешь, забирай себе (Copy -> Past)

P.S. Я не проверял, будут ли при попадании на маркер цифры для всех игроков, или только для источника. Но по идее только для источника должны (если я не ошибся с trigerClientEvent).

* Для отображения цифр я использовал dxDrawText

* Переменная n, отвечает за цифру, с которой начинается обратный отсчет

* Я попытался сделать, что бы цифры были в центре экрана, но тоже не уверен что получилось.

Client Side:

local sWidth,sHeight = guiGetScreenSize() -- The variables 
  
n=5 --начало обратного отсчета 
nSize = 4 --Размер цифр 
nFont = "bankgothic" --Шрифт цифр 
nColor_R, nColor_G, nColor_B, nColor_A  = 0, 255, 0, 255 --Цвет и прозрачность цифр (RGBA) 
  
function count_render () 
    if not(n == -1) then 
        dxDrawText ( tostring(n), sWidth, sHeight*0.37, 1, 1, tocolor ( nColor_R, nColor_G, nColor_B, nColor_A ), nSize,nFont,"center","top",false,false,true,false,false) 
    else 
        removeEventHandler("onClientRender", source, count_render) --Убираем рэндер 
    end 
end 
  
  
function start_countdown () 
    setTimer(function () n=n-1 end,1000,n+1) 
    addEventHandler("onClientRender", source, count_render) --Запускаем Рэндер 
end 
addEvent( "start_countdown", true ) 
addEventHandler( "start_countdown", getRootElement(), start_countdown ) 

Server side:

local marker_countdown = createMarker( -703.15, 955.92, 12.1, "cylinder", 2, 255, 255, 0, 200) 
  
function marker_countdown_hit( thePlayer ) 
        if source == marker_countdown then 
            triggerClientEvent (thePlayer, "start_countdown", getRootElement()) 
        end 
end 
addEventHandler ( "onMarkerHit",getRootElement(),marker_countdown_hit ) 

Link to comment
Мы не телепаты. Код покажи.
local theMarker = createMarker(-1652.9, -160.4, 1, 'cylinder', 30.0, 0, 255, 0, 500) 
  
function Countdown ( thePlayer == localPlayer ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage (305,119,250,190,"images/3.png",false) 
    setTimer ( Countdown2, 1000, 1 ) 
end 
function Countdown2 ( thePlayer == localPlayer ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage(305,119,250,190,"images/2.png",false) 
    setTimer ( Countdown1, 1000, 1 ) 
end 
function Countdown1 ( thePlayer == localPlayer ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage(305,119,250,190,"images/1.png",false) 
    setTimer ( Countdown0, 1000, 1 ) 
end 
function Countdown0 ( thePlayer == localPlayer ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage(305,119,320,81,"images/go.png",false) 
    setTimer ( CountdownEnd, 3000, 1 ) 
end 
function CountdownEnd ( thePlayer == localPlayer ) 
    guiSetVisible ( imagecount, false ) 
end 
addCommandHandler ( "countdown", Countdown ) 
bindKey ( "=", "down", Countdown ) 
  
addEventHandler ( "onClientMarkerHit", theMarker, Countdown ) 

aef7f6312744.png

Link to comment
  • Scripting Moderators

Хватит даблпостить! Есть кнопка "EDIT".

Флакер, а как ты сделал что у тебя гуи по другому виду или стилю кому как ? как сделал?
nFont = "bankgothic" --Шрифт цифр 

Link to comment
ваще-то название переменной должно быть хотя бы sFont так как содержимое текст

Помогите плжалуйста с этим кодом

local theMarker = createMarker(-1652.9, -160.4, 1, 'cylinder', 30.0, 0, 255, 0, 500) 
  
function Countdown ( thePlayer == localPlayer ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage (305,119,250,190,"images/3.png",false) 
    setTimer ( Countdown2, 1000, 1 ) 
end 
function Countdown2 ( thePlayer == localPlayer ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage(305,119,250,190,"images/2.png",false) 
    setTimer ( Countdown1, 1000, 1 ) 
end 
function Countdown1 ( thePlayer == localPlayer ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage(305,119,250,190,"images/1.png",false) 
    setTimer ( Countdown0, 1000, 1 ) 
end 
function Countdown0 ( thePlayer == localPlayer ) 
    guiSetVisible ( imagecount, false ) 
    imagecount = guiCreateStaticImage(305,119,320,81,"images/go.png",false) 
    setTimer ( CountdownEnd, 3000, 1 ) 
end 
function CountdownEnd ( thePlayer == localPlayer ) 
    guiSetVisible ( imagecount, false ) 
end 
addCommandHandler ( "countdown", Countdown ) 
bindKey ( "=", "down", Countdown ) 
  
addEventHandler ( "onClientMarkerHit", theMarker, Countdown ) 

Link to comment
Флакер, а как ты сделал что у тебя гуи по другому виду или стилю кому как ? как сделал?

Settings -> Interface -> Skin: Lighter Blue

Насчет кода Countdown: странно..., у меня работало все... Щас перепроверю полностью.

ваще-то название переменной должно быть хотя бы sFont так как содержимое текст

Полностью разделяю твое мнение.

Link to comment

Хотя у меня все работало, я чуть изменил код. (Проверил. Работает.)

Теперь осталось узнать, заработает ли у тебя...

P.S. Копируй аккуратно!

Server:

local marker_countdown = createMarker( -703.15, 955.92, 12.1, "cylinder", 2, 255, 255, 0, 200) 
  
function marker_countdown_hit( thePlayer ) 
        if source == marker_countdown then 
            triggerClientEvent (thePlayer, "start_countdown", getRootElement()) 
        end 
end 
addEventHandler ( "onMarkerHit",getRootElement(),marker_countdown_hit ) 

Client:

local sWidth,sHeight = guiGetScreenSize() 
  
n=2 --начало обратного отсчета 
nSpeedCount = 1000 --Скорость смены цифр (Стандартно: 1000мс (1 секунда)) 
nSize = 4 --Размер цифр 
sFont = "bankgothic" --Шрифт цифр 
nColor_R, nColor_G, nColor_B, nColor_A  = 0, 255, 0, 255 --Цвет и прозрачность цифр (RGBA) 
  
function count_render () 
    if not(n <= -1) then 
        dxDrawText ( tostring(n), sWidth, sHeight*0.37, 1, 1, tocolor ( nColor_R, nColor_G, nColor_B, nColor_A ), nSize,sFont,"center","top",false,false,true,false,false) 
    else 
        removeEventHandler("onClientRender", source, count_render) --Убираем рэндер 
    end 
end 
  
  
function start_countdown () 
    setTimer(function () n=n-1 end,nSpeedCount,n+1) 
    addEventHandler("onClientRender", source, count_render) --Запускаем Рэндер 
end 
addEvent( "start_countdown", true ) 
addEventHandler( "start_countdown", getRootElement(), start_countdown ) 

Link to comment
local sWidth,sHeight = guiGetScreenSize() 

->

local nWidth,nHeight = guiGetScreenSize() 

хотя не суть

У меня просто эти переменные переходят из скрипта в скрипт. Как сначала назывались, так и называются по сей день.

Но спасибо за такую заметку, теперь при названии буду учитывать тип переменной.

Link to comment

Подскажите, как работать с базами данных?

Тут вот несколько вопросов накопилось по SQLite:

1) Как создать свою .bd (SQLite Database Browser имеется, я там создал, но она без расширения .bd создалась. Ошибка? Неправильно создал?)

2) При использовании:

executeSQLCreateTable

executeSQLDelete

executeSQLDropTable

executeSQLInsert

executeSQLQuery

executeSQLSelect

executeSQLUpdate

С какой базой работаешь? registry.db?

3) В каком порядке выполнять подключение и получение/сохранение данных в базу.

P.S. Если есть какой то примерчик, был бы очень благодарен.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...