kino Posted December 2, 2011 Share Posted December 2, 2011 у меня 2 вопроса 1 почему не работает этот код function onChat(player,msgc,t) if t == 0 then local px,py,pz=getElementPosition(player) local msg = table.concat(msgc, " ") local nick=getPlayerName(player) local r,g,b =255,255,255 for _,v in ipairs(getElementsByType("player")) do if isPlayerInRangeOfPoint(v,px,py,pz,chat_range) then outputChatBox(""..nick..": "..msg,v,r,g,b,true) end end end if t ==2 then local r,g,b= getTeamColor(getPlayerTeam(player)) local msg = table.concat(msgc, " ") local nick=getPlayerName(player) rank=getElementData(player,"frang") outputChatBox(rank .." "..nick..": "..msg,getPlayerTeam(player),r,g,b,true) end cancelEvent () end addCommandHandler("Local",onChat) addEventHandler( "onPlayerChat", getRootElement(), onChat ) 2вопрос как сделать камеру сделать как в кат сценах обрезанная по верхним краям? Link to comment
Kenix Posted December 2, 2011 Share Posted December 2, 2011 у меня 2 вопроса1 почему не работает этот код function onChat(player,msgc,t) if t == 0 then local px,py,pz=getElementPosition(player) local msg = table.concat(msgc, " ") local nick=getPlayerName(player) local r,g,b =255,255,255 for _,v in ipairs(getElementsByType("player")) do if isPlayerInRangeOfPoint(v,px,py,pz,chat_range) then outputChatBox(""..nick..": "..msg,v,r,g,b,true) end end end if t ==2 then local r,g,b= getTeamColor(getPlayerTeam(player)) local msg = table.concat(msgc, " ") local nick=getPlayerName(player) rank=getElementData(player,"frang") outputChatBox(rank .." "..nick..": "..msg,getPlayerTeam(player),r,g,b,true) end cancelEvent () end addCommandHandler("Local",onChat) addEventHandler( "onPlayerChat", getRootElement(), onChat ) 2вопрос как сделать камеру сделать как в кат сценах обрезанная по верхним краям? Ты делаешь обработчик onPlayerChat к функции onChat это не будет работать т.к аргументы в функции неверные создай 2 функции одну для обработчика команды другую для обработчика события. как сделать камеру сделать как в кат сценах обрезанная по верхним краям? Самому юзай https://wiki.multitheftauto.com/wiki/RU/ ... 0.B8.D1.8F p.s Запомни глобальную переменную root навсегда.root это тоже самое что и getRootElement( ) Код: addCommandHandler("Local", function( source,cmd,msgc,Type ) if not Type or Type == 0 then local px,py,pz = getElementPosition( source ) local msg = table.concat( msgc, " " ) local nick = getPlayerName( source ) local r,g,b = 255,255,255 for _,v in ipairs( getElementsByType("player") ) do if isPlayerInRangeOfPoint( v,px,py,pz,chat_range ) then outputChatBox(nick..": "..msg,v,r,g,b,true) end end elseif Type == 2 then local playerTeam = getPlayerTeam( source ) if playerTeam then local r,g,b = getTeamColor( playerTeam ) local msg = table.concat( msgc, " " ) local nick = getPlayerName( source ) local rank = getElementData( source,"frang" ) outputChatBox(rank .." "..nick..": "..msg,playerTeam,r,g,b,true) end end end ) addEventHandler( "onPlayerChat", root, function( msgc,Type ) cancelEvent( ) if Type == 0 then local px,py,pz = getElementPosition( source ) local msg = table.concat( msgc, " " ) local nick = getPlayerName( source ) local r,g,b = 255,255,255 for _,v in ipairs( getElementsByType("player") ) do if isPlayerInRangeOfPoint( v,px,py,pz,chat_range ) then outputChatBox(nick..": "..msg,v,r,g,b,true) end end elseif Type == 2 then local playerTeam = getPlayerTeam( source ) if playerTeam then local r,g,b = getTeamColor( playerTeam ) local msg = table.concat( msgc, " " ) local nick = getPlayerName( source ) local rank = getElementData( source,"frang" ) outputChatBox(rank .." "..nick..": "..msg,playerTeam,r,g,b,true) end end end ) Link to comment
killer100 Posted December 4, 2011 Share Posted December 4, 2011 Помогите пожалуйста написать скрипт, скрипт для Race мода, суть в том, если написать /gravitys то машины всех игроков зависнуть в воздухе, как будто гравитацию сменили на 0.000, примерно на 2-3 секунды, а потом их машины резко полетят вниз, как будто гравитацию сменили на 0.2 (если писать /gravitys это будет действовать на всех игроков, а если /gravitys name то на выбранного игрока) Помогите кто сможет... Link to comment
Kenix Posted December 4, 2011 Share Posted December 4, 2011 сервер addCommandHandler("gravitys", function( source,cmd,name ) if type( name ) == "string" then local from = getPlayerFromName( name ) if from then setPedGravity( from,0 ) setTimer( setPedGravity,2000,1,from,0.2 ) end else setPedGravity( root,0 ) setTimer( setPedGravity,2000,1,root,0.2 ) end end) Link to comment
killer100 Posted December 4, 2011 Share Posted December 4, 2011 сервер addCommandHandler("gravitys", function( source,cmd,name ) if type( name ) == "string" then local from = getPlayerFromName( name ) if from then setPedGravity( from,0 ) setTimer( setPedGravity,2000,1,from,0.2 ) end else setPedGravity( root,0 ) setTimer( setPedGravity,2000,1,root,0.2 ) end end ) А можно сдеать вот так? 1. Если написать /gravitys то у всех игроков будет меняться гравитация, сначала сделается 0.1 через 1 секунду 0.000, и опять через секунду станет нормальной(0.008) И что бы вышло сообщение в чат "Ник_кто написал_/gravirtys изменил гравитацию всем игрокам!"? 2. Если написать /gravitys playe_name изменится гравитация именно у этого игрока. И сообщение в чат "Ник_кто написал /gravitys player_name изменил гравитацию Player_name? Link to comment
Masha_Digel Posted December 4, 2011 Share Posted December 4, 2011 Почему нажимаю Map Editor и выскакивает такая табличка???? Link to comment
MX_Master Posted December 4, 2011 Share Posted December 4, 2011 killer100, сам не доделаешь? хоть что-то нужно же дописать самому Masha_Digel, я думаю, ресурс Map Editor не установлен Link to comment
killer100 Posted December 4, 2011 Share Posted December 4, 2011 killer100, сам не доделаешь? хоть что-то нужно же дописать самомуMasha_Digel, я думаю, ресурс Map Editor не установлен MX_Master, я пытался, но что то добром не получается, помоги пожалуйста... Я не могу сделать: изменение гравитации сначала 0.1 через секунду 0.000 и опять через секунду 0.008 И если написать /gravitys изменится гравитация у всех игроков, а сообщения в чат могу сам сделать... Link to comment
MX_Master Posted December 4, 2011 Share Posted December 4, 2011 Если не мучаться самому, то ничему не научишься (: делай, показывай и тогда поможем Link to comment
killer100 Posted December 4, 2011 Share Posted December 4, 2011 Если не мучаться самому, то ничему не научишься (: делай, показывай и тогда поможем В общем вот что у меня получилось: function setgravity ( player, cmd, name ) player = findPlayer(name) if isPedInVehicle( player ) then setPedGravity( player,0.1 ) setTimer( setPedGravity,1000,1,player,0.000,1000,1,0.008 ) outputChatBox(getPlayerName(player).." #fff000set gravitation to "..getPlayerName(player).."!",getRootElement(),255,255,0, true) end end addCommandHandler( "sgravity", setgravity ) 1. Этот скрипт только для /sgravity name(а мне ещё и нужно что бы он срабатывал на всех игроках, если написать просто /sgravity) 2. Он притягиевает к земле(0.1), потом меняет гра-ию на 0.000, но не меняет на 0.008(а мне нужно сначала 0.1 потом 0.000 потом 0.008) Link to comment
MX_Master Posted December 4, 2011 Share Posted December 4, 2011 Если не мучаться самому, то ничему не научишься (: делай, показывай и тогда поможем В общем вот что у меня получилось: function setgravity ( player, cmd, name ) player = findPlayer(name) if isPedInVehicle( player ) then setPedGravity( player,0.1 ) setTimer( setPedGravity,1000,1,player,0.000,1000,1,0.008 ) outputChatBox(getPlayerName(player).." #fff000set gravitation to "..getPlayerName(player).."!",getRootElement(),255,255,0, true) end end addCommandHandler( "sgravity", setgravity ) 1. Этот скрипт только для /sgravity name(а мне ещё и нужно что бы он срабатывал на всех игроках, если написать просто /sgravity) 2. Он притягиевает к земле(0.1), потом меняет гра-ию на 0.000, но не меняет на 0.008(а мне нужно сначала 0.1 потом 0.000 потом 0.008) function setgravity ( player, cmd, name ) -- ДЛЯ ВСЕХ if not name or name == '' then local players = getElementsByType('player') if not players then return end for _, player in ipairs(players) do if isPedInVehicle( player ) then setPedGravity( player,0.1 ) setTimer( setPedGravity,1000,1,player,0.000,1000,1,0.008 ) outputChatBox(getPlayerName(player).." #fff000set gravitation to "..getPlayerName(player).."!",getRootElement(),255,255,0, true) end end return end -- ТОЛЬКО ДЛЯ ОДНОГО ИГРОКА local player = findPlayer(name) if not player then return end if isPedInVehicle( player ) then setPedGravity( player,0.1 ) setTimer( setPedGravity,1000,1,player,0.000,1000,1,0.008 ) outputChatBox(getPlayerName(player).." #fff000set gravitation to "..getPlayerName(player).."!",getRootElement(),255,255,0, true) end end addCommandHandler( "sgravity", setgravity ) это я по твоему же примеру сделал Link to comment
H1TM4N Posted December 4, 2011 Share Posted December 4, 2011 Всем привет. Я хочу научится скриптингу в мта. Раньше писал в пешке и думаю что тут не очень много отличий. В общем сервер создал, выбрал готовый мод. Теперь хочется его настроить под себя. 1. Каким образом в мта работает система регистрации/авторизации и где ее найти? 2. В какой файл идут зарегистрированые пользователи? Link to comment
_Dark_ Posted December 4, 2011 Share Posted December 4, 2011 Ну так как я тоже суда пришел относительно недавно, отвечу, так как сам через это проходил. Отличий от Pawn много. От SAMP'а еще больше. В подробности углу:Oть не буду, долго объяснять. Можете почитать мои сообщения и мою тему с моими вопросиками. Система регистрации авторизации в MTA встроенная, найти ее функции можно здесь. Аккаунты созданные стандартной системой регистрации, если не ошибаюсь, идут в ..\MTA San Andreas 1.1\server\mods\deathmatch\internal.db Это файл SQLite. Открыть и отредактировать можно, например, SQLite Browser'ом. Желательны знания языка запросов SQL. Link to comment
MX_Master Posted December 4, 2011 Share Posted December 4, 2011 Всем привет. Я хочу научится скриптингу в мта.... В разделе скриптинга также рекомендуем просмотреть все "верхние" прикрепленные темы. Link to comment
H1TM4N Posted December 5, 2011 Share Posted December 5, 2011 Как создать глобальную переменную? Мне для использования этой переменной из одного скрипта, в другом. Такое реально в мта?) Link to comment
kino Posted December 5, 2011 Share Posted December 5, 2011 есть массив _G он доступен из любого срв скрипта _G["var"] Link to comment
Aibo Posted December 5, 2011 Share Posted December 5, 2011 Как создать глобальную переменную? Мне для использования этой переменной из одного скрипта, в другом. Такое реально в мта?) всё, что не "local" — то глобально в пределах ресурса (с разделением на клиентскую и серверную часть, само собой). глобальнее нельзя, ибо каждый ресурс работает в своей VM. Link to comment
H1TM4N Posted December 5, 2011 Share Posted December 5, 2011 Блин я по ходу долго буду вникать во все это Хочу сделать сохранение уровней и убийства игроков, а как это сделать не понимаю. С деньгами я вроде разобрался, нашел в одном скрипте идеальный пример. Отключаясь сохраняем счет, подключаясь загружаем счет. setAccountData ( playeraccount, "s.HandMoney", getPlayerMoney ( source ) ) local playermoney = getAccountData ( playeraccount, "s.HandMoney" ) if ( playermoney ) then setPlayerMoney ( source, playermoney ) end Как добавлять уровень и убийства я не понял, что нужно вместо getPlayerMoney и setPlayerMoney ставить? Link to comment
Aibo Posted December 5, 2011 Share Posted December 5, 2011 setElementData/getElementData, например. ну и при выходе тоже надо сохранять куда-нибудь, да. Link to comment
_Dark_ Posted December 5, 2011 Share Posted December 5, 2011 Блин я по ходу долго буду вникать во все это Хочу сделать сохранение уровней и убийства игроков, а как это сделать не понимаю. С деньгами я вроде разобрался, нашел в одном скрипте идеальный пример. Отключаясь сохраняем счет, подключаясь загружаем счет. setAccountData ( playeraccount, "s.HandMoney", getPlayerMoney ( source ) ) local playermoney = getAccountData ( playeraccount, "s.HandMoney" ) if ( playermoney ) then setPlayerMoney ( source, playermoney ) end Как добавлять уровень и убийства я не понял, что нужно вместо getPlayerMoney и setPlayerMoney ставить? У меня создается впечатление, что вы ничего не знаете ни в Pawn, ни в SAMP (откуда, как говорите пришли). Вы в Pawn как делали (если делали)? Создавали переменную new Kills[MAXPLAYERS]; new Deaths[MAXPLAYERS]; public onPlayerDeath(playerid, killerid, reason) // и прибавляли в паблике убийства и смерти { Kills[killerid]++; Deaths[playerid]++; return 1; } Тут так же. Только можно setElementData / getElementData использовать (аналог PVar'ов). Насчет сохранения: setAccountData(thePlayer, "Kills", переменная содержащая количество убийств) setAccountData(thePlayer, "Deaths", аналогично) --[[example local kills = getElementData(thePlayer, "Kills") local deaths = getElementData(thePlayer, "Deaths") setAccountData(thePlayer, "Kills", kills) setAccountData(thePlayer, "Deaths", deaths Это честно говоря, базовые знания, они должны быть у вас уже, если вы работали в Pawn и соответственно в SAMP (я про переменные и как сделать счетчики убийств / смертей). И конечно же, не стоит забывать про Wiki.MtaSa.Com Link to comment
H1TM4N Posted December 5, 2011 Share Posted December 5, 2011 _Dark_, не надо на меня давить и давай на чистоту. Я самоучка в павно. В самп писал скрипты и переделывал моды на "любителя", в паблике моих работ нет т.к. пишу для себя. В павно я многое понимаю, но не знаю как и что называется, от чего мне приходится гуглить чуть ли не каждое "заумное" слово про скриптинг из ваших ответов. Да и задавать каждый вопрос по сравнению к пешке по моему не красиво, т.к. тут совсем другое. Так что извиняйте что приходится иногда тупить спасибо с уровнем, разобрался все работает Link to comment
_Dark_ Posted December 5, 2011 Share Posted December 5, 2011 _Dark_, не надо на меня давить и давай на чистоту. Я самоучка в павно. В самп писал скрипты и переделывал моды на "любителя", в паблике моих работ нет т.к. пишу для себя. В павно я многое понимаю, но не знаю как и что называется, от чего мне приходится гуглить чуть ли не каждое "заумное" слово про скриптинг из ваших ответов. Да и задавать каждый вопрос по сравнению к пешке по моему не красиво, т.к. тут совсем другое. Так что извиняйте что приходится иногда тупить спасибо с уровнем, разобрался все работает Давайте на чистоту. Я самоучка в Pawn, сам всему научился, сам проводил время на wiki, pawno.ru и других проектах. В SAMP писал скрипты чисто для себя. Мод создавал только для своего сервера (онлайн 100/100). В паблике моих работ нет. В Pawno я очень много знаю, кроме того, в данный момент веду разработку своей системы мониторинга игровых серверов на PHP (коммерческий проект), пишу мод для MTA и веду активное изучение LUA. Знаю все и что как называется, ничего не гуглю, это все уже прошел. Ну и думаю, что вы задали некорректный вопрос. Вы спрашивали или как сохранять смерти или убийства во встроенной системе аккаунтов или как вообще это сделать. Так что, не надо делать поспешные выводы с давлением, лучше бы официальную Wiki почитали, там много чего полезного. Правда. Link to comment
_Dark_ Posted December 5, 2011 Share Posted December 5, 2011 А, да, на заметку: Pawno - не язык программирования. Его тот же SAMP сервер не поддерживает. Link to comment
killer100 Posted December 5, 2011 Share Posted December 5, 2011 Если не мучаться самому, то ничему не научишься (: делай, показывай и тогда поможем В общем вот что у меня получилось: function setgravity ( player, cmd, name ) player = findPlayer(name) if isPedInVehicle( player ) then setPedGravity( player,0.1 ) setTimer( setPedGravity,1000,1,player,0.000,1000,1,0.008 ) outputChatBox(getPlayerName(player).." #fff000set gravitation to "..getPlayerName(player).."!",getRootElement(),255,255,0, true) end end addCommandHandler( "sgravity", setgravity ) 1. Этот скрипт только для /sgravity name(а мне ещё и нужно что бы он срабатывал на всех игроках, если написать просто /sgravity) 2. Он притягиевает к земле(0.1), потом меняет гра-ию на 0.000, но не меняет на 0.008(а мне нужно сначала 0.1 потом 0.000 потом 0.008) function setgravity ( player, cmd, name ) -- ДЛЯ ВСЕХ if not name or name == '' then local players = getElementsByType('player') if not players then return end for _, player in ipairs(players) do if isPedInVehicle( player ) then setPedGravity( player,0.1 ) setTimer( setPedGravity,1000,1,player,0.000,1000,1,0.008 ) outputChatBox(getPlayerName(player).." #fff000set gravitation to "..getPlayerName(player).."!",getRootElement(),255,255,0, true) end end return end -- ТОЛЬКО ДЛЯ ОДНОГО ИГРОКА local player = findPlayer(name) if not player then return end if isPedInVehicle( player ) then setPedGravity( player,0.1 ) setTimer( setPedGravity,1000,1,player,0.000,1000,1,0.008 ) outputChatBox(getPlayerName(player).." #fff000set gravitation to "..getPlayerName(player).."!",getRootElement(),255,255,0, true) end end addCommandHandler( "sgravity", setgravity ) это я по твоему же примеру сделал Скрипт не возвращяет игрока в нормальную гравитацию(0.008), а всё остальное работает замечательно. Как это сделать? Я вообще не представляю не когда этого не делал... Link to comment
MX_Master Posted December 5, 2011 Share Posted December 5, 2011 _Dark_, pawn это язык программирования (: и редактор в одном лице. Просто детям так проще. pawno и pawn для них это одно и тоже, просто во втором слове одной буквы в конце не хватает, и думают, что это опечатка того, кто это написал killer100 function setgravity ( player, cmd, name ) -- ДЛЯ ВСЕХ if not name or name == '' then local players = getElementsByType('player') if not players then return end for _, player in ipairs(players) do if isPedInVehicle( player ) then setPedGravity( player,0.1 ) setTimer( setPedGravity,1000,1,player,0.008 ) outputChatBox(getPlayerName(player).." #fff000set gravitation to "..getPlayerName(player).."!",getRootElement(),255,255,0, true) end end return end -- ТОЛЬКО ДЛЯ ОДНОГО ИГРОКА local player = findPlayer(name) if not player then return end if isPedInVehicle( player ) then setPedGravity( player,0.1 ) setTimer( setPedGravity,1000,1,player,0.008 ) outputChatBox(getPlayerName(player).." #fff000set gravitation to "..getPlayerName(player).."!",getRootElement(),255,255,0, true) end end addCommandHandler( "sgravity", setgravity ) 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