KruTolic_rus Posted December 9, 2012 Share Posted December 9, 2012 Я пользовался 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
TwiX! Posted December 9, 2012 Share Posted December 9, 2012 во 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
KruTolic_rus Posted December 9, 2012 Author Share Posted December 9, 2012 во 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
TwiX! Posted December 9, 2012 Share Posted December 9, 2012 да зайди на https://wiki.multitheftauto.com/wiki/Main_Page и посмотри слева всё написано Link to comment
KruTolic_rus Posted December 9, 2012 Author Share Posted December 9, 2012 дазайди на 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
TwiX! Posted December 9, 2012 Share Posted December 9, 2012 Блин,английский,это плохо...это плохо... Всё там хорошо Но если писать "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
_Vincent_ Posted December 9, 2012 Share Posted December 9, 2012 Хоть и выглядит как самореклама, но https://wiki.multitheftauto.com/index.ph ... /Main_Page Если с английским все настолько плохо, быть может, хоть мой дубовый перевод поможет. Но на некотором уровне английский научиться понимать все равно придется, чтобы мочь смотреть какие функции/события за что отвечают. Во "введении в скриптинг GUI" есть про триггеры (это блок справа). Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now