Jump to content

Не создаються команды!


Recommended Posts

Я пользовался debugscript 3,и вконце-не выдавало ошибок,но и самых команд я так и не увидел.(Они попросту не создаються в TAB менюшке).Но проверить я не могу сам скрипт распределения т.к. команды не создаються.

P.S-Есть идея сделать отдельный .lua и там уже создать комады(если их создавать без дополнений) но я думаю,что у меня ошибка где то здесь,или я что то не то сделал.

function TeamsCreate () 
GuestJoin = createTeam ( "Guest", 0, 255, 0 ) 
PlayersJoin = createTeam ( "Players", 120, 120, 0 ) 
AdminsJoin = createTeam ( "Admins", 120, 120, 0 ) 
OwnerJoin = createTeam ( "Owner", 230, 0, 59 ) 
end 
addEventHandler ( "onResourceStart", getRootElement(), TeamsCreate ) 
  
  
  
function NotLoggedIn () 
    PlayerCheck =  getRandomPlayer (ThePlayer,true ) 
    if ( PlayerCheck ) then 
    setPlayerTeam ( source, GuestJoin ) 
    end 
       if ( PlayerCheck == false) then 
    end 
end 
addEventHandler ( "onClientPlayerJoin", getRootElement(), NotLoggedIn ) 
  
  
  
function PlayersPlay () 
if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(source)), aclGetGroup("Everyone")) then 
   setPlayerTeam(source, PlayersJoin) 
   end 
end 
addEventHandler ( "onPlayerLogin", getRootElement(), PlayersPlay ) 
  
  
  
function AdminsTeam () 
if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(source)), aclGetGroup("Admin")) then 
   setPlayerTeam(source, AdminsJoin) 
   setPedArmor ( ThePlayer, 100 ) 
   end 
end 
addEventHandler ( "onPlayerLogin", getRootElement(), AdminsTeam ) 
  
  
  
  
function OwnerTeam () 
if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(source)), aclGetGroup("Supermoderator")) then 
   setPlayerTeam(source, OwnerJoin) 
   setPedArmor ( ThePlayer, 100 ) 
   end 
end 
addEventHandler ( "onPlayerLogin", getRootElement(), OwnerTeam ) 

Link to comment

во 1

getRandomPlayer 

работает только на серверной стороне,

onClientPlayerJoin 

евент работает только на клиенте.

во 2

setPedArmor ( thePlayer, 100 ) 

От куда ты взял ThePlayer?

В 3 , проще сделать всё в 1 евенте

onPlayerLogin 

Код

function TeamsCreate () 
    GuestJoin = createTeam ( "Guest", 0, 255, 0 ) 
    PlayersJoin = createTeam ( "Players", 120, 120, 0 ) 
    AdminsJoin = createTeam ( "Admins", 120, 120, 0 ) 
    OwnerJoin = createTeam ( "Owner", 230, 0, 59 ) 
end 
addEventHandler ( "onResourceStart", getResourceRootElement ( getThisResource ( ) ), TeamsCreate ) 
  
function jPlayers ( ) 
    if ( isGuestAccount ( getPlayerAccount ( source ) ) ) then 
        setPlayerTeam ( source, GuestJoin ); 
    end 
end 
addEventHandler ( "onPlayerJoin", getRootElement(), jPlayers ) 
  
function PlayersPlay () 
    if isObjectInACLGroup ( "user." .. getAccountName ( getPlayerAccount ( source ) ), aclGetGroup ( "Everyone" ) ) then 
       setPlayerTeam(source, PlayersJoin) 
    elseif isObjectInACLGroup ( "user." .. getAccountName ( getPlayerAccount ( source ) ), aclGetGroup ( "Admin" ) ) then 
        setPlayerTeam ( source, AdminsJoin ); 
        setPedArmor ( source, 100 ); 
    elseif isObjectInACLGroup ( "user." .. getAccountName ( getPlayerAccount ( source ) ), aclGetGroup ( "Supermoderator" ) ) then 
        setPlayerTeam ( source, OwnerJoin ); 
        setPedArmor ( source, 100 ); 
    end 
end 
addEventHandler ( "onPlayerLogin", getRootElement(), PlayersPlay ) 

getResourceRootElement ( getThisResource ( ) ) 

Нужно для того чтобы срабатывал евент

onResoureStart 

Только твой ресурс, а не когда любой другой ресурс будет работать.

onPlayerJoin 

Евент нужен для того чтобы проверять вошедшего игрока, в принципе проверка там не нужна, так как у него акка естественно не будет, можно просто сразу ему ставить "Guest" Команду

Link to comment
во 1
getRandomPlayer 

работает только на серверной стороне,

onClientPlayerJoin 

евент работает только на клиенте.

во 2

setPedArmor ( thePlayer, 100 ) 

От куда ты взял ThePlayer?

В 3 , проще сделать всё в 1 евенте

onPlayerLogin 

Код

function TeamsCreate () 
    GuestJoin = createTeam ( "Guest", 0, 255, 0 ) 
    PlayersJoin = createTeam ( "Players", 120, 120, 0 ) 
    AdminsJoin = createTeam ( "Admins", 120, 120, 0 ) 
    OwnerJoin = createTeam ( "Owner", 230, 0, 59 ) 
end 
addEventHandler ( "onResourceStart", getResourceRootElement ( getThisResource ( ) ), TeamsCreate ) 
  
function jPlayers ( ) 
    if ( isGuestAccount ( getPlayerAccount ( source ) ) ) then 
        setPlayerTeam ( source, GuestJoin ); 
    end 
end 
addEventHandler ( "onPlayerJoin", getRootElement(), jPlayers ) 
  
function PlayersPlay () 
    if isObjectInACLGroup ( "user." .. getAccountName ( getPlayerAccount ( source ) ), aclGetGroup ( "Everyone" ) ) then 
       setPlayerTeam(source, PlayersJoin) 
    elseif isObjectInACLGroup ( "user." .. getAccountName ( getPlayerAccount ( source ) ), aclGetGroup ( "Admin" ) ) then 
        setPlayerTeam ( source, AdminsJoin ); 
        setPedArmor ( source, 100 ); 
    elseif isObjectInACLGroup ( "user." .. getAccountName ( getPlayerAccount ( source ) ), aclGetGroup ( "Supermoderator" ) ) then 
        setPlayerTeam ( source, OwnerJoin ); 
        setPedArmor ( source, 100 ); 
    end 
end 
addEventHandler ( "onPlayerLogin", getRootElement(), PlayersPlay ) 

Спасибо тебе,выручил,но вот еще вопрос: Можно ссылку на туториал по сервер-клиент функциях? Я еще такого никогда не замечал,но в ядре ресурсов часто есть : name_c.lua и name_s.lua.

Как я понял,это то,что исполняет сервер(server) и вывод к клиенту ( client )

Link to comment
да

зайди на

https://wiki.multitheftauto.com/wiki/Main_Page

и посмотри слева всё написано

Блин,английский,это плохо...это плохо...

Слушай,опять вопрос: getThisResource используеться один раз,ну к примеру там:

function StartThisTuturial () 
suchAddonsInThis 
end 
addEventHandler ( "onResourceStart", getResourceRootElement(getThisResource()), StartThisTuturial ) 
  
function AddAddonsInThisResource () 
otherOneAddons 
end 
addEventHandler ( "onResourceStart", getResourceRootElement(), StartThisTuturial ) 

Как я понял(очень недавно начал скриптить)-Ветка идет от большего до меньшего(Мать--сын--сын сына)

Но если писать "onResourceStart" то не проще ли сделать тогда,если стартанул StartThisTuturial?

Как это сделать?

P.S. Не вижу туториала... Как мне связывать серверный и клиентские функции,если они в разных .lua файлах?

Link to comment

Блин,английский,это плохо...это плохо...

Всё там хорошо

Но если писать "onResourceStart" то не проще ли сделать тогда,если стартанул StartThisTuturial?

Как это сделать?

Не понял суть вопроса.

P.S. Не вижу туториала... Как мне связывать серверный и клиентские функции,если они в разных .lua файлах?

С помощью

https://wiki.multitheftauto.com/wiki/TriggerClientEvent

и

https://wiki.multitheftauto.com/wiki/TriggerServerEvent

Естественно сработает сначала StartThisTutorial а потом AddAddonsInThisResource т.к ты расположил их в таком порядке

getResourceRootElement(getThisResource()) 

ещё раз говорю что это сделано для того чтобы в

onResourceStart 

евент работал только когда ТВОЙ ресурс начнёт работу

можешь проверить так:

function StartThisTuturial ( ) 
    outputChatBox ( ' Этот текст будет работать при старте только #ff0000ТВОЕГО #ffffffресурса ' , root, 255, 255, 255, true ); 
end 
addEventHandler ( "onResourceStart", getResourceRootElement ( getThisResource ( ) ), StartThisTuturial ) 

 

и тоже самое только с

 

function anotherStart ( ) 
    outputChatBox ( ' Теперь выводится текст при старте #ff0000ЛЮБОГО #ffffffресурса ' , root, 255, 255, 255, true ); 
end 
addEventHandler ( "onResourceStart", root, anotherStart ) 

[b]root[/b] 

определён как

[b]getRootElement ( )[/b] 

засунь его в отдельную папку там myResource

стартани его, ты увидишь 2 сообщения,

потом перезагрузи любой работающий скрипт. и ты увидишь 2-е сообщение

Link to comment

Хоть и выглядит как самореклама, но :D

https://wiki.multitheftauto.com/index.ph ... /Main_Page

Если с английским все настолько плохо, быть может, хоть мой дубовый перевод поможет.

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

Во "введении в скриптинг GUI" есть про триггеры (это блок справа).

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