Jump to content

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


Recommended Posts

Нет,ничего не исправилось...
addEventHandler ("onPlayerDamage", getRootElement(),  
function( attacker, weapon, bodypart, loss )  
    local team = getPlayerTeam ( attacker ) 
  if team and (attacker ~= source) and (attacker ~= nil) and (source ~= nil) and (weapon == 3) and (loss > 1) and (getElementType (attacker) == "player") and  getTeamFromName( team ) == 'Police' then 

Вот код,если что.

где createTeam? что говорит дебаг (/debugscript 3)

ты скинул не весь код, или ругается на проверку эту?, ок что говорит дебаг (/debugscript 3)

Link to comment
createTeam в другом скрипте:)

дебаг орёт Bad Argument.(GetTeamFromName)

На строку номер 6(Тут)

addEventHandler ("onPlayerDamage", getRootElement(),  
function( attacker, weapon, bodypart, loss )  
    local team = getPlayerTeam ( attacker ) 
  if team and (attacker ~= source) and (attacker ~= nil) and (source ~= nil) and (weapon == 3) and (loss > 1) and (getElementType (attacker) == "player") and  getTeamName( team ) == 'Police' then 

Link to comment
createTeam в другом скрипте:)

дебаг орёт Bad Argument.(GetTeamFromName)

На строку номер 6(Тут)

addEventHandler ("onPlayerDamage", getRootElement(),  
function( attacker, weapon, bodypart, loss )  
    local team = getPlayerTeam ( attacker ) 
  if team and (attacker ~= source) and (attacker ~= nil) and (source ~= nil) and (weapon == 3) and (loss > 1) and (getElementType (attacker) == "player") and  getTeamName( team ) == 'Police' then 

Хех,такая простая была ошибка((

Спасиб.

Link to comment

Спасибо,Qwerty,что ответил.

Так и знал,что в каком-нибудь "Нубоместе" допущу ошибку.

Как?

Как сделать с помощью if,then функцию проверки,совпали ли картинки(Хватит не очень большого примера 10-11 строчек).

Link to comment
Спасибо,Qwerty,что ответил.

Так и знал,что в каком-нибудь "Нубоместе" допущу ошибку.

Как?

Как сделать с помощью if,then функцию проверки,совпали ли картинки(Хватит не очень большого примера 10-11 строчек).

не совсем понял

  
x = 1 
y = 2 
z = 3 
  
if x,y,z then 
       outputChatBox( 'Work',root,0,255,0) 
else 
       outputChatBox( 'Not Work',root,255,0,0) 
end 

или

local sx, sy = guiGetScreenSize() 
  
    local wx = 111 
    local wy = 222 
    local px = ((sx/2)-(wx/2)) 
    local py = ((sy/2)-(wy/2)) 
if px,py then.. 
  

Edited by Guest
Link to comment
  
-- таблица с ячейками 
local randomInt =  
{ 
    [1] = math.random(1, 6), -- рандомное число ячейки 1 
    [2] = math.random(1, 6), -- рандомное число ячейки 2 
    [3] = math.random(1, 6) -- рандомной число ячейки 3 
} 
  
-- рисуем картинки ячеек 
 dxDrawImage(x, y, w, h, "Image" .. randomInt[1] .. ".png") 
 dxDrawImage(x, y, w, h, "Image" .. randomInt[2] .. ".png") 
 dxDrawImage(x, y, w, h, "Image" .. randomInt[3] .. ".png") 
  
-- если все числа ячеек совпали 
if randomInt[1] == randomInt[2] and randomInt[1] == randomInt[3] then 
-- код 
end 

Link to comment

Есть код:

local playerTeam = getPlayerTeam ( player ) 
  
function OnNametagUpdate( player ) 
  if not playerTeam == teampolice then 
        setPlayerNametagText( player, getPlayerName( player ) .. "[" .. ( tonumber( getPlayerWantedLevel( player ) ) or 0 ) .. "]" ) 
     else 
        cancelEvent 
     end 
end 
  
function NametagUpdate() 
    for _, p in ipairs( getElementsByType( "player" ) ) do 
        OnNametagUpdate( p ); 
    end 
end 
setTimer( NametagUpdate, 1000, 0 ); 

Дебаг орет:

[2012-02-22 23:53:04] WARNING: Loading script failed: namewantedlevel\namewantedlevel.lua:10: '=' expected near 'end' 
  

Подскажите где ошибка? Почему орет на 10ю строку? Там все нормально, вроде...

Link to comment

Ты забыл вызвать функциюю cancelEvent( ).

И ещё:

setPlayerNametagText( player, getPlayerName( player ) .. "[" .. ( tonumber( getPlayerWantedLevel( player ) ) or 0 ) .. "]" ) 

Это не правильно т.к ты должен юзать строку , а не число .

Т.е тебе надо конвертнуть из числа в строку.

Т.е так:

  
setPlayerNametagText( player, getPlayerName( player ) .. "[" .. tostring( getPlayerWantedLevel( player ) or 0 ) .. "]" ) 
  

Полный код.

  
  
function OnNametagUpdate( player ) 
    local playerTeam = getPlayerTeam ( player ) 
    if not playerTeam == teampolice then 
        setPlayerNametagText( player, getPlayerName( player ) .. "[" .. tostring( getPlayerWantedLevel( player ) or 0 ) .. "]" ) 
    else 
        cancelEvent( ) 
    end 
end 
  
function NametagUpdate() 
    for _, p in ipairs( getElementsByType( "player" ) ) do 
        OnNametagUpdate( p ) 
    end 
end 
setTimer( NametagUpdate, 1000, 0 ) 

Обновил.

Вопрос:Переменная teampolice определена?

Вопрос2:Ты аттачил к фунции OnNametagUpdate обработчик события?( addEventHandler )

Link to comment

Спасибо большое за помощь!!! Завтра протестю и отпишу :D

Вопрос:Переменная teampolice определена?

Вопрос2:Ты аттачил к фунции OnNametagUpdate обработчик события?( addEventHandler )

teampolice определена (с другого скрипта)

2. Нет Оо... Этот момент я упустил... Для такого скрипта нужно что то вроде этого?

addEventHandler ("onPlayerLogin", getRootElement(), functionname) 

p.s. это серверный скрипт.

Edited by Guest
Link to comment

Т.е как я понял ты не аттачил обработчик события к функции OnNametagUpdate?

Зачем тогда ты юзаешь cancelEvent( ) ?

Отмена события работать не будет. :)

Link to comment
Т.е как я понял ты не аттачил обработчик события к функции OnNametagUpdate?

Зачем тогда ты юзаешь cancelEvent( ) ?

Отмена события работать не будет. :)

Тут в скрипте изначальная проблема есть из-за которой этот гемор. У меня есть скрипт профессий. Когда ты берешь профессию копа выполняется:

setPlayerNametagText (source, "[COP]" .. getPlayerName (source)) 

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

Каким боком тут скрипт уровня розыска? Именно этот скрипт удаляет тег, который создается выше, и заменяет его на уровень розыска - соответственно копы не работают т.к. нет нужного тега [COP]. Недолго думая я решил исключить команду копов из этого скрипта. Вот зачем отмена события. Если знаешь как это можно исправить по другому, то подскажи пожалуйста :( Мне кажится мой вариант совсем убог :(

Link to comment
  
local playerTeam = getPlayerTeam ( player ) 
  
function OnNametagUpdate( player ) 
  if not playerTeam == teampolice then 
        setPlayerNametagText( player, getPlayerName( player ) .. "[" .. ( tonumber( getPlayerWantedLevel( player ) ) or 0 ) .. "]" ) 
    else 
        cancelEvent() 
    end 
end 
  
function NametagUpdate() 
    for _, p in ipairs( getElementsByType( "player" ) ) do 
        OnNametagUpdate( p ); 
    end 
end 
setTimer( NametagUpdate, 1000, 0 ); 

cancelEvent()

edit -- Fail again...

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...