×

Langue

Fermer
Atelier 801
  • Forums
  • Dev Tracker
  • Connexion
    • English Français
      Português do Brasil Español
      Türkçe Polski
      Magyar Română
      العربية Skandinavisk
      Nederlands Deutsch
      Bahasa Indonesia Русский
      中文 Filipino
      Lietuvių kalba 日本語
      Suomi עברית
      Italiano Česky
      Hrvatski Slovensky
      Български Latviešu
      Estonian
  • Langue
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • [Scriptmeister] Небольшие скрипты на заказ
« ‹ 6 / 10 › »
[Scriptmeister] Небольшие скрипты на заказ
Demon
« Citoyen »
1437072840000
    • Demon#3348
    • Profil
    • Derniers messages
#101
  0
Smgxxx a dit :
Dobrjik a dit :
Работает, только проблема в том что ей может пользаваться любой человек который играет в комнате, не только я.

Ну у тебя в изначальном коде тоже для всех, поэтому думал надо так делать

tfm.exec.disableAutoNewGame(true)
tfm.exec.disableAutoScore(true) -- отключить автобалы

local players = {}
function eventNewPlayer(name)
players[name] = {fly = false}
tfm.exec.bindKeyboard(name,32,true,true)
end
for name,player in pairs(tfm.get.room.playerList) do
eventNewPlayer(name)
end
local admins = {"Dobrjik"}
local shop={
{name="Умереть",price=0,effect=function(name) tfm.exec.killPlayer(name) end, forAdmin=false},
{name="Возродиться",price=6,effect=function(name) tfm.exec.respawnPlayer(name) end, forAdmin=false},
{name="Получить сыр",price=5,effect=function(name) tfm.exec.giveCheese(name) end, forAdmin=false},
{name="Получить мип",price=3,effect=function(name) tfm.exec.giveMeep(name) end, forAdmin=false},
{name="Стать шаманом",price=10,effect=function(name) tfm.exec.setShaman(name) end, forAdmin=false},
{name="Стать вампиром",price=6,effect=function(name) tfm.exec.setVampirePlayer(name) end, forAdmin=false},
{name="Переключить карту",price=0,effect=function(name) startGame() end, forAdmin=true},
{name="2 минуты до конца карты",price=0,effect=function(name) tfm.exec.setGameTime("121") end, forAdmin=true},
{name="Полет",price=0,effect=function(name) players[name].fly = not(players[name].fly) end, forAdmin=true}
}
function eventKeyboard(name,key,down,x,y)
if key==32 and players[name].fly then
tfm.exec.movePlayer(name,0,0,true,0,-50,false)
end
end
function count(t, f)
local c = 0
for k,v in pairs(t) do
if f == nil or (type(f) == "function" and f(v)) then
c = c + 1
end
end
return c
end
function table.indexOf(t, value)
for i, v in ipairs(t) do
if v==value then
return i
end
end
return false
end

function startGame()
local maps = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70}
tfm.exec.newGame(maps[math.random(#maps)])
tfm.exec.setUIMapName("<J>[BETA] <VP>Golden Cheese")
tfm.exec.setPlayerScore("Dobrjik", "10000")
tfm.exec.setNameColor("Dobrjik", 0xEB1D51)
end

function eventPlayerLeft(playerName)
print("<VP>"..playerName.." <R>покинул комнату.")
end

function eventNewPlayer(playerName)
print("<VP>"..playerName.." <J>зашел в комнату.")
end


function eventLoop(currentTime,remaining)
if remaining<=0 then
startGame()
end
end
function eventPlayerWon(name) -- когда игрок зашел в нору
tfm.exec.setPlayerScore(name,3,true) -- добавить 3 очка
print("<VP>"..name.."<J> получил 3 очка.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventPlayerDied(name) -- когда игрок умер
tfm.exec.setPlayerScore(name,-1,true) -- отнять 1 очко
print("<VP>"..name.."<R> потерял 1 очко.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventNewGame() -- когда началась новая карта
for k,v in pairs(tfm.get.room.playerList) do -- в цикле проходимся по всем мышам
if v.isShaman then -- если нашелся шаман
tfm.exec.setPlayerScore(k,1,true) -- добавить 1 очко шаману
end
end -- конец цикла
end

function eventChatCommand(name,command)
if command=="shop" then
local str=""
for id,item in pairs(shop) do
if (item.forAdmin and table.indexOf(admins, name)) or not item.forAdmin then
str=str.."<a href='event:buy "..id.."'>["..item.price.."] "..item.name.."</a><br />"
end
end
ui.addTextArea(1, str, name, 300, 100, 200, 200, nil, nil, 1, true)
ui.addTextArea(2, "<b><a href='event:exit'>X</a></b>", name, 485, 100, nil, nil, nil, nil, 0, true)
end
end

function eventTextAreaCallback(id,name,callback)
local arg={}
for args in callback:gmatch("[^%s]+") do
table.insert(arg,args:lower())
end
local id=tonumber(arg[2])
if arg[1]=="buy" and id then
if shop[id] and tfm.get.room.playerList[name].score>=shop[id].price and ((shop[id].forAdmin and table.indexOf(admins, name)) or not shop[id].forAdmin) then
if shop[id].effect then shop[id].effect(name) end
-- Действие при покупке.
tfm.exec.setPlayerScore(name,-shop[id].price,true)
end
elseif arg[1]=="exit" then
ui.removeTextArea(1, name)
ui.removeTextArea(2, name)
end
end
startGame()

Спасибо, не заметил даже.
Кстати, я если даю себе много очков (админ всетаки, для проверок) то выходит что я всегда шаман, так вот, можно ли как-то сделать чтобы очков было много, но шаманили все по очереди, ну или на худой конец чтобы для админов все команды были бесплатны не добавляя новых пунктов в магазин.
Smgxxx
« Citoyen »
1437285960000
    • Smgxxx#0000
    • Profil
    • Derniers messages
    • Tribu
#102
  0
Держи

tfm.exec.disableAutoNewGame(true)
tfm.exec.disableAutoScore(true) -- отключить автобалы

local players = {}
local admins = {"Dobrjik"}
local shop={
{name="Умереть",price=0,effect=function(name) tfm.exec.killPlayer(name) end, forAdmin=false},
{name="Возродиться",price=6,effect=function(name) tfm.exec.respawnPlayer(name) end, forAdmin=false},
{name="Получить сыр",price=5,effect=function(name) tfm.exec.giveCheese(name) end, forAdmin=false},
{name="Получить мип",price=3,effect=function(name) tfm.exec.giveMeep(name) end, forAdmin=false},
{name="Стать шаманом",price=10,effect=function(name) tfm.exec.setShaman(name) end, forAdmin=false},
{name="Стать вампиром",price=6,effect=function(name) tfm.exec.setVampirePlayer(name) end, forAdmin=false},
{name="Переключить карту",price=0,effect=function(name) startGame() end, forAdmin=true},
{name="2 минуты до конца карты",price=0,effect=function(name) tfm.exec.setGameTime("121") end, forAdmin=true},
{name="Полет",price=0,effect=function(name) players[name].fly = not(players[name].fly) end, forAdmin=true}
}

function count(t, f)
local c = 0
for k,v in pairs(t) do
if f == nil or (type(f) == "function" and f(v)) then
c = c + 1
end
end
return c
end
function table.indexOf(t, value)
for i, v in ipairs(t) do
if v==value then
return i
end
end
return false
end

function startGame()
local maps = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70}
tfm.exec.newGame(maps[math.random(#maps)])
tfm.exec.setUIMapName("<J>[BETA] <VP>Golden Cheese")
tfm.exec.setNameColor("Dobrjik", 0xEB1D51)
end

function eventKeyboard(name,key,down,x,y)
if key==32 and players[name].fly then
tfm.exec.movePlayer(name,0,0,true,0,-50,false)
end
end
function eventPlayerLeft(playerName)
print("<VP>"..playerName.." <R>покинул комнату.")
end
function eventNewPlayer(playerName)
players[playerName] = {fly = false}
tfm.exec.bindKeyboard(playerName,32,true,true)
print("<VP>"..playerName.." <J>зашел в комнату.")
end
for name,player in pairs(tfm.get.room.playerList) do
eventNewPlayer(name)
end


function eventLoop(currentTime,remaining)
if remaining<=0 then
startGame()
end
end
function eventPlayerWon(name) -- когда игрок зашел в нору
tfm.exec.setPlayerScore(name,3,true) -- добавить 3 очка
print("<VP>"..name.."<J> получил 3 очка.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventPlayerDied(name) -- когда игрок умер
tfm.exec.setPlayerScore(name,-1,true) -- отнять 1 очко
print("<VP>"..name.."<R> потерял 1 очко.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventNewGame() -- когда началась новая карта
for k,v in pairs(tfm.get.room.playerList) do -- в цикле проходимся по всем мышам
if v.isShaman then -- если нашелся шаман
tfm.exec.setPlayerScore(k,1,true) -- добавить 1 очко шаману
end
end -- конец цикла
end

function eventChatCommand(name,command)
if command=="shop" then
local str=""
for id,item in pairs(shop) do
if (item.forAdmin and table.indexOf(admins, name)) or not item.forAdmin then
str=str.."<a href='event:buy "..id.."'>["..item.price.."] "..item.name.."</a><br />"
end
end
ui.addTextArea(1, str, name, 300, 100, 200, 200, nil, nil, 1, true)
ui.addTextArea(2, "<b><a href='event:exit'>X</a></b>", name, 485, 100, nil, nil, nil, nil, 0, true)
end
end

function eventTextAreaCallback(id,name,callback)
local arg={}
for args in callback:gmatch("[^%s]+") do
table.insert(arg,args:lower())
end
local id=tonumber(arg[2])
local isAdmin = table.indexOf(admins, name)
if arg[1]=="buy" and id then
if shop[id] and isAdmin or (tfm.get.room.playerList[name].score>=shop[id].price and ((shop[id].forAdmin and isAdmin) or not shop[id].forAdmin)) then
if shop[id].effect then shop[id].effect(name) end
-- Действие при покупке.
if not isAdmin then
tfm.exec.setPlayerScore(name,-shop[id].price,true)
end
end
elseif arg[1]=="exit" then
ui.removeTextArea(1, name)
ui.removeTextArea(2, name)
end
end
startGame()
Fentesa
« Citoyen »
1437820260000
    • Fentesa#0000
    • Profil
    • Derniers messages
    • Tribu
#103
  0
Bushmeister a dit :
a dit :
никто не сможет на нее повлиять/чудесным образом удалить. Буду благодарна.

А кто её может изменять? Первый кто кликнет?

Тот, кто впишет смешые буковки своего ника в соответствующую строку.
Smgxxx
« Citoyen »
1437886200000
    • Smgxxx#0000
    • Profil
    • Derniers messages
    • Tribu
#104
  0
Fentesa a dit :
1) и снова я.
2) в определенном x и y, которые можно указать самому, появляется табличка (прямоугольник, квадрат, прозрачная, не прозрачная - не важно), на которую определенный игрок, нажав, может писать что угодно, при этом табличка видна всем, и никто не сможет на нее повлиять/чудесным образом удалить. Буду благодарна.

Держи код

local admin = "Fentesa"
local x = 100
local y = 100
local width = 100
local height = 100
local text = "Нажми на меня"
ui.addTextArea(1, [[<a href="event:text"><p><font color="#343434">]]..text..[[</font></p></a>]], nil, x, y, width, height, 0xfefffe, 0x000000, 0.5, true)

function eventTextAreaCallback(id, playerName, callback)
if callback == "text" and playerName == admin then
ui.addPopup(1, 2, "", playerName, 300, 150, 200, true)
end
end
function eventPopupAnswer(id, playerName, answer)
if playerName == admin then
text = answer
ui.updateTextArea(1, [[<a href="event:text"><p><font color="#343434">]]..text..[[</font></p></a>]], nil)
end
end
Kitemite
« Citoyen »
1437979680000
    • Kitemite#0000
    • Profil
    • Derniers messages
    • Tribu
#105
  0
Жаль что в module team никто кто разберается в lua с нашего сервера не пойдет :(
Bushmeister
« Consul »
1437987660000
    • Bushmeister#0000
    • Profil
    • Derniers messages
    • Tribu
#106
  0
kitemite a dit :
Жаль что в module team никто кто разберается в lua с нашего сервера не пойдет :(

Ну почему никто? Я знаю несколько человек с ру сервера, которые состоят в module team. Другое дело, что существуют скрытые члены команды(кем они и являются), которые не хотят чтобы их доставали с просьбами запустить модуль.
Demon
« Citoyen »
1437994260000
    • Demon#3348
    • Profil
    • Derniers messages
#107
  0
Smgxxx a dit :
Fentesa a dit :
1) и снова я.
2) в определенном x и y, которые можно указать самому, появляется табличка (прямоугольник, квадрат, прозрачная, не прозрачная - не важно), на которую определенный игрок, нажав, может писать что угодно, при этом табличка видна всем, и никто не сможет на нее повлиять/чудесным образом удалить. Буду благодарна.

Держи код

local admin = "Fentesa"
local x = 100
local y = 100
local width = 100
local height = 100
local text = "Нажми на меня"
ui.addTextArea(1, [[&lt;a href="event:text"&gt;&lt;p&gt;&lt;font color="#343434"&gt;]]..text..[[&lt;/font&gt;&lt;/p&gt;&lt;/a&gt;]], nil, x, y, width, height, 0xfefffe, 0x000000, 0.5, true)

function eventTextAreaCallback(id, playerName, callback)
if callback == "text" and playerName == admin then
ui.addPopup(1, 2, "", playerName, 300, 150, 200, true)
end
end
function eventPopupAnswer(id, playerName, answer)
if playerName == admin then
text = answer
ui.updateTextArea(1, [[&lt;a href="event:text"&gt;&lt;p&gt;&lt;font color="#343434"&gt;]]..text..[[&lt;/font&gt;&lt;/p&gt;&lt;/a&gt;]], nil)
end
end

Спасибо, и наверное последний основной вопрос: можно ли сделать чтобы в ротации карт были еще и ивентовые карты на время которых бы можно было изменить название карты (там где по умолчанию Golden Cheese) и время.
Smgxxx
« Citoyen »
1438059180000
    • Smgxxx#0000
    • Profil
    • Derniers messages
    • Tribu
#108
  0
Dobrjik a dit :
Спасибо, и наверное последний основной вопрос: можно ли сделать чтобы в ротации карт были еще и ивентовые карты на время которых бы можно было изменить название карты (там где по умолчанию Golden Cheese) и время.

Код

tfm.exec.disableAutoNewGame(true)
tfm.exec.disableAutoScore(true) -- отключить автобалы

local players = {}
local admins = {"Dobrjik"}
local shop={
{name="Умереть",price=0,effect=function(name) tfm.exec.killPlayer(name) end, forAdmin=false},
{name="Возродиться",price=6,effect=function(name) tfm.exec.respawnPlayer(name) end, forAdmin=false},
{name="Получить сыр",price=5,effect=function(name) tfm.exec.giveCheese(name) end, forAdmin=false},
{name="Получить мип",price=3,effect=function(name) tfm.exec.giveMeep(name) end, forAdmin=false},
{name="Стать шаманом",price=10,effect=function(name) tfm.exec.setShaman(name) end, forAdmin=false},
{name="Стать вампиром",price=6,effect=function(name) tfm.exec.setVampirePlayer(name) end, forAdmin=false},
{name="Переключить карту",price=0,effect=function(name) startGame() end, forAdmin=true},
{name="2 минуты до конца карты",price=0,effect=function(name) tfm.exec.setGameTime("121") end, forAdmin=true},
{name="Полет",price=0,effect=function(name) players[name].fly = not(players[name].fly) end, forAdmin=true}
}
local maps = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,
{xml=[[<C><P Ca="" D="x_transformice/x_maps/x_peche2015/map-aventure-1.jpg" d="x_transformice/x_maps/x_peche2015/map-aventure-1-foreground.png" DS="m;655,338,48,275,41,127" /><Z><S><S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="420" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="-20" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="820" H="480" Y="200" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="-20" H="480" Y="200" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="64" H="40" Y="148" T="0" /><S m="" P="0,0,0.3,0.2,-10,0,0,0" L="100" X="142" H="40" Y="120" T="0" /><S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="76" H="60" Y="136" T="0" /><S m="" P="0,0,0.3,0.2,-6,0,0,0" L="100" X="192" H="40" Y="98" T="0" /><S m="" P="0,0,0.3,0.2,4,0,0,0" L="120" X="232" H="30" Y="90" T="0" /><S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="136" H="30" Y="100" T="0" /><S m="" P="0,0,0.3,0.2,-40,0,0,0" L="24" X="165" H="10" Y="81" T="0" /><S m="" P="0,0,0.3,0.2,10,0,0,0" L="24" X="251" H="10" Y="80" T="0" /><S m="" P="0,0,0.3,0.2,10,0,0,0" L="50" X="25" H="20" Y="134" T="0" /><S m="" P="0,0,0.3,0.2,50,0,0,0" L="34" X="297" H="20" Y="98" T="0" /><S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="302" H="30" Y="116" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="352" H="30" Y="129" T="0" /><S m="" P="0,0,0.3,0.2,60,0,0,0" L="34" X="382" H="20" Y="134" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="392" H="30" Y="154" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="414" H="30" Y="161" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="458" H="24" Y="171" T="0" /><S m="" P="0,0,0.3,0.2,10,0,0,0" L="40" X="457" H="20" Y="164" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="425" H="20" Y="157" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="451" H="20" Y="165" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="34" X="339" H="20" Y="120" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="10" X="487" H="18" Y="171" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="417" H="30" Y="195" T="0" /><S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="450" H="40" Y="189" T="0" /><S m="" P="0,0,0.3,0.2,50,0,0,0" L="15" X="378" H="40" Y="216" T="0" /><S m="" P="0,0,0.3,0.2,12,0,0,0" L="200" X="271" H="30" Y="200" T="0" /><S m="" P="0,0,0.3,0.2,-10,0,0,0" L="180" X="85" H="30" Y="197" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="20" X="311" H="20" Y="229" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="14" H="20" Y="230" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="32" X="8" H="20" Y="267" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="15" X="7" H="20" Y="249" T="0" /><S m="" P="0,0,0.3,0.2,10,0,0,0" L="100" X="52" H="20" Y="289" T="0" /><S m="" P="0,0,0.3,0.2,20,0,0,0" L="100" X="148" H="20" Y="328" T="0" /><S m="" P="0,0,0.3,0.2,60,0,0,0" L="34" X="103" H="20" Y="308" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="225" H="20" Y="369" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="50" X="213" H="20" Y="357" T="0" /><S m="" P="0,0,0.3,0.2,20,0,0,0" L="100" X="320" H="20" Y="385" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="360" H="20" Y="383" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="458" H="20" Y="384" T="0" /><S m="" P="0,0,0.3,0.2,-10,0,0,0" L="100" X="556" H="20" Y="376" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="667" H="20" Y="354" T="0" /><S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="612" H="30" Y="361" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="15" X="716" H="30" Y="340" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="15" X="721" H="60" Y="308" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="60" X="693" H="20" Y="279" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="64" X="430" H="40" Y="300" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="70" X="500" H="34" Y="306" T="0" /><S m="" P="0,0,0.3,0.2,-15,0,0,0" L="120" X="607" H="40" Y="270" T="0" /><S m="" P="0,0,0.3,0.2,-35,0,0,0" L="40" X="541" H="40" Y="295" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="474" H="20" Y="299" T="0" /><S m="" P="0,0,0.3,0.2,-6,0,0,0" L="70" X="365" H="36" Y="302" T="0" /><S m="" P="0,0,0.3,0.2,14,0,0,0" L="120" X="279" H="10" Y="305" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="130" X="286" H="10" Y="290" T="0" /><S m="" P="0,0,0.3,0.2,35,0,0,0" L="40" X="690" H="100" Y="220" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="756" H="40" Y="191" T="0" /><S m="" P="0,0,0.3,0.2,-3,0,0,0" L="30" X="719" H="40" Y="186" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="746" H="20" Y="184" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="20" X="788" H="30" Y="153" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="779" H="10" Y="156" T="13" /><S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="207" H="30" Y="362" T="0" /><S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="167" H="30" Y="343" T="0" /><S m="" P="0,0,0.3,0.2,40,0,0,0" L="34" X="200" H="20" Y="348" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="86" X="587" H="30" Y="177" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="544" H="10" Y="180" T="13" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="572" H="30" Y="198" T="0" /><S m="" P="0,0,0.3,0.2,50,0,0,0" L="40" X="547" H="20" Y="190" T="0" /><S m="" P="0,0,0.3,0.2,-40,0,0,0" L="40" X="601" H="20" Y="190" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="632" H="10" Y="175" T="13" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="617" H="10" Y="187" T="13" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="427" H="10" Y="282" T="0" /><S m="" P="0,0,0.3,0.2,-20,0,0,0" L="50" X="683" H="30" Y="222" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="658" H="10" Y="230" T="13" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="683" H="10" Y="208" T="13" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="445" H="10" Y="190" T="13" /></S><D /><O /></Z></C>]], mapName="peche", time=130},
{xml=[[<C><P DS="m;17,314,29,56" Ca="" D="x_transformice/x_maps/x_peche2015/map-aventure-3.jpg" d="x_transformice/x_maps/x_peche2015/map-aventure-3-foreground.png" /><Z><S><S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="420" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="-20" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="820" H="480" Y="200" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="-20" H="480" Y="200" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="54" X="28" H="40" Y="345" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="54" X="68" H="40" Y="356" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="152" H="40" Y="373" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="110" X="258" H="40" Y="396" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="130" X="379" H="40" Y="372" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" X="453" H="20" Y="355" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="478" H="20" Y="340" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="38" X="501" H="30" Y="322" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" X="529" H="20" Y="329" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="585" H="34" Y="302" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="640" H="20" Y="311" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="665" H="20" Y="332" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="691" H="30" Y="341" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="68" X="766" H="30" Y="321" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="728" H="30" Y="151" T="0" /><S m="" P="0,0,0.3,0.2,-10,0,0,0" L="32" X="785" H="30" Y="127" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="676" H="20" Y="129" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="638" H="30" Y="152" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="760" H="30" Y="210" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="681" H="30" Y="189" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="606" H="30" Y="179" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="52" X="638" H="30" Y="199" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="70" X="37" H="30" Y="81" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="72" H="30" Y="86" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="110" H="30" Y="102" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="179" H="30" Y="114" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="222" H="30" Y="140" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="54" X="286" H="60" Y="145" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="357" H="30" Y="162" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="10" X="314" H="60" Y="152" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="12" X="410" H="60" Y="159" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="27" X="431" H="60" Y="178" T="0" /><S m="" P="0,0,0.3,0.2,20,0,0,0" L="54" X="447" H="40" Y="178" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="462" H="30" Y="205" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="428" H="30" Y="237" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="42" X="499" H="30" Y="232" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="546" H="20" Y="240" T="0" /><S m="" P="0,0,0.3,0.2,70,0,0,0" L="26" X="477" H="20" Y="186" T="0" /><S m="" P="0,0,0.3,0.2,60,0,0,0" L="28" X="508" H="20" Y="207" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="529" H="24" Y="228" T="0" /><S m="" P="0,0,0.3,0.2,40,0,0,0" L="26" X="541" H="20" Y="230" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="13" H="24" Y="241" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="55" H="30" Y="223" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="177" H="30" Y="260" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="100" X="94" H="30" Y="236" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="210" H="30" Y="247" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="236" H="30" Y="230" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="336" H="30" Y="217" T="0" /><S m="" P="0,0,,,,0,0,0" L="115" X="258" H="15" Y="369" T="9" /><S m="" P="0,0,,,,0,0,0" L="115" X="695" H="15" Y="319" T="9" /><S m="" P="0,0,,,,0,0,0" L="115" X="728" H="15" Y="131" T="9" /><S m="" P="0,0,,,,0,0,0" L="115" X="352" H="15" Y="141" T="9" /></S><D /><O /></Z></C>]],mapName="peche", time=130}

}
local currentMap

function count(t, f)
local c = 0
for k,v in pairs(t) do
if f == nil or (type(f) == "function" and f(v)) then
c = c + 1
end
end
return c
end
function table.indexOf(t, value)
for i, v in ipairs(t) do
if v==value then
return i
end
end
return false
end

function startGame()
currentMap = maps[math.random(#maps)]
local m,mN
if type(currentMap) == "table" then -- если карта эвента то
m = currentMap.xml
mN = currentMap.mapName
else
m = currentMap
mN = "<J>[BETA] <VP>Golden Cheese"
end
tfm.exec.newGame(m)
tfm.exec.setUIMapName(mN)
tfm.exec.setNameColor("Dobrjik", 0xEB1D51)
end

function eventKeyboard(name,key,down,x,y)
if key==32 and players[name].fly then
tfm.exec.movePlayer(name,0,0,true,0,-50,false)
end
end
function eventPlayerLeft(playerName)
print("<VP>"..playerName.." <R>покинул комнату.")
end
function eventNewPlayer(playerName)
players[playerName] = {fly = false}
tfm.exec.bindKeyboard(playerName,32,true,true)
print("<VP>"..playerName.." <J>зашел в комнату.")
end
for name,player in pairs(tfm.get.room.playerList) do
eventNewPlayer(name)
end


function eventLoop(currentTime,remaining)
if remaining<=0 then
startGame()
end
end
function eventPlayerWon(name) -- когда игрок зашел в нору
tfm.exec.setPlayerScore(name,3,true) -- добавить 3 очка
print("<VP>"..name.."<J> получил 3 очка.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventPlayerDied(name) -- когда игрок умер
tfm.exec.setPlayerScore(name,-1,true) -- отнять 1 очко
print("<VP>"..name.."<R> потерял 1 очко.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventNewGame() -- когда началась новая карта
for k,v in pairs(tfm.get.room.playerList) do -- в цикле проходимся по всем мышам
if v.isShaman then -- если нашелся шаман
tfm.exec.setPlayerScore(k,1,true) -- добавить 1 очко шаману
end
end -- конец цикла

if type(currentMap) == "table" and currentMap.time ~= nil then
tfm.exec.setGameTime(currentMap.time, true)
end

end

function eventChatCommand(name,command)
if command=="shop" then
local str=""
for id,item in pairs(shop) do
if (item.forAdmin and table.indexOf(admins, name)) or not item.forAdmin then
str=str.."<a href='event:buy "..id.."'>["..item.price.."] "..item.name.."</a><br />"
end
end
ui.addTextArea(1, str, name, 300, 100, 200, 200, nil, nil, 1, true)
ui.addTextArea(2, "<b><a href='event:exit'>X</a></b>", name, 485, 100, nil, nil, nil, nil, 0, true)
end
end

function eventTextAreaCallback(id,name,callback)
local arg={}
for args in callback:gmatch("[^%s]+") do
table.insert(arg,args:lower())
end
local id=tonumber(arg[2])
local isAdmin = table.indexOf(admins, name)
if arg[1]=="buy" and id then
if shop[id] and isAdmin or (tfm.get.room.playerList[name].score>=shop[id].price and ((shop[id].forAdmin and isAdmin) or not shop[id].forAdmin)) then
if shop[id].effect then shop[id].effect(name) end
-- Действие при покупке.
if not isAdmin then
tfm.exec.setPlayerScore(name,-shop[id].price,true)
end
end
elseif arg[1]=="exit" then
ui.removeTextArea(1, name)
ui.removeTextArea(2, name)
end
end
startGame()

у карт теперь следующая структура, maps = {1,2,3, {xml=[[...]], mapName="Название",time=140}, 4, ...}
Если хочешь добавить карту ивента, то находишь последнюю карту (сейчас это строка 20), ставишь после нее запятую и добавляешь таблицу {xml=[[...]], mapName="Название",time=140}.
Вместо XML карты можно писать номер "@123456", время не обязательно ставить. Сейчас на ивенте появляется шаман если захочешь его убрать, то нужно изменять функцию startGame
Demon
« Citoyen »
1438115220000
    • Demon#3348
    • Profil
    • Derniers messages
#109
  0
Smgxxx a dit :
Dobrjik a dit :
Спасибо, и наверное последний основной вопрос: можно ли сделать чтобы в ротации карт были еще и ивентовые карты на время которых бы можно было изменить название карты (там где по умолчанию Golden Cheese) и время.

Код

tfm.exec.disableAutoNewGame(true)
tfm.exec.disableAutoScore(true) -- отключить автобалы

local players = {}
local admins = {"Dobrjik"}
local shop={
{name="Умереть",price=0,effect=function(name) tfm.exec.killPlayer(name) end, forAdmin=false},
{name="Возродиться",price=6,effect=function(name) tfm.exec.respawnPlayer(name) end, forAdmin=false},
{name="Получить сыр",price=5,effect=function(name) tfm.exec.giveCheese(name) end, forAdmin=false},
{name="Получить мип",price=3,effect=function(name) tfm.exec.giveMeep(name) end, forAdmin=false},
{name="Стать шаманом",price=10,effect=function(name) tfm.exec.setShaman(name) end, forAdmin=false},
{name="Стать вампиром",price=6,effect=function(name) tfm.exec.setVampirePlayer(name) end, forAdmin=false},
{name="Переключить карту",price=0,effect=function(name) startGame() end, forAdmin=true},
{name="2 минуты до конца карты",price=0,effect=function(name) tfm.exec.setGameTime("121") end, forAdmin=true},
{name="Полет",price=0,effect=function(name) players[name].fly = not(players[name].fly) end, forAdmin=true}
}
local maps = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,
{xml=[[&lt;C&gt;&lt;P Ca="" D="x_transformice/x_maps/x_peche2015/map-aventure-1.jpg" d="x_transformice/x_maps/x_peche2015/map-aventure-1-foreground.png" DS="m;655,338,48,275,41,127" /&gt;&lt;Z&gt;&lt;S&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="420" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="-20" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="820" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="-20" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="64" H="40" Y="148" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="100" X="142" H="40" Y="120" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="76" H="60" Y="136" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-6,0,0,0" L="100" X="192" H="40" Y="98" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="120" X="232" H="30" Y="90" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="136" H="30" Y="100" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-40,0,0,0" L="24" X="165" H="10" Y="81" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="24" X="251" H="10" Y="80" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="50" X="25" H="20" Y="134" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,50,0,0,0" L="34" X="297" H="20" Y="98" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="302" H="30" Y="116" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="352" H="30" Y="129" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,60,0,0,0" L="34" X="382" H="20" Y="134" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="392" H="30" Y="154" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="414" H="30" Y="161" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="458" H="24" Y="171" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="40" X="457" H="20" Y="164" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="425" H="20" Y="157" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="451" H="20" Y="165" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="34" X="339" H="20" Y="120" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="10" X="487" H="18" Y="171" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="417" H="30" Y="195" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="450" H="40" Y="189" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,50,0,0,0" L="15" X="378" H="40" Y="216" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,12,0,0,0" L="200" X="271" H="30" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="180" X="85" H="30" Y="197" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="20" X="311" H="20" Y="229" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="14" H="20" Y="230" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="32" X="8" H="20" Y="267" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="15" X="7" H="20" Y="249" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="100" X="52" H="20" Y="289" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,20,0,0,0" L="100" X="148" H="20" Y="328" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,60,0,0,0" L="34" X="103" H="20" Y="308" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="225" H="20" Y="369" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="50" X="213" H="20" Y="357" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,20,0,0,0" L="100" X="320" H="20" Y="385" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="360" H="20" Y="383" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="458" H="20" Y="384" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="100" X="556" H="20" Y="376" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="667" H="20" Y="354" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="612" H="30" Y="361" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="15" X="716" H="30" Y="340" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="15" X="721" H="60" Y="308" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="60" X="693" H="20" Y="279" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="64" X="430" H="40" Y="300" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="70" X="500" H="34" Y="306" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-15,0,0,0" L="120" X="607" H="40" Y="270" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-35,0,0,0" L="40" X="541" H="40" Y="295" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="474" H="20" Y="299" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-6,0,0,0" L="70" X="365" H="36" Y="302" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,14,0,0,0" L="120" X="279" H="10" Y="305" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="130" X="286" H="10" Y="290" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,35,0,0,0" L="40" X="690" H="100" Y="220" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="756" H="40" Y="191" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-3,0,0,0" L="30" X="719" H="40" Y="186" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="746" H="20" Y="184" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="20" X="788" H="30" Y="153" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="779" H="10" Y="156" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="207" H="30" Y="362" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="167" H="30" Y="343" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="34" X="200" H="20" Y="348" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="86" X="587" H="30" Y="177" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="544" H="10" Y="180" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="572" H="30" Y="198" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,50,0,0,0" L="40" X="547" H="20" Y="190" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-40,0,0,0" L="40" X="601" H="20" Y="190" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="632" H="10" Y="175" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="617" H="10" Y="187" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="427" H="10" Y="282" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-20,0,0,0" L="50" X="683" H="30" Y="222" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="658" H="10" Y="230" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="683" H="10" Y="208" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="445" H="10" Y="190" T="13" /&gt;&lt;/S&gt;&lt;D /&gt;&lt;O /&gt;&lt;/Z&gt;&lt;/C&gt;]], mapName="peche", time=130},
{xml=[[&lt;C&gt;&lt;P DS="m;17,314,29,56" Ca="" D="x_transformice/x_maps/x_peche2015/map-aventure-3.jpg" d="x_transformice/x_maps/x_peche2015/map-aventure-3-foreground.png" /&gt;&lt;Z&gt;&lt;S&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="420" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="-20" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="820" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="-20" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="54" X="28" H="40" Y="345" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="54" X="68" H="40" Y="356" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="152" H="40" Y="373" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="110" X="258" H="40" Y="396" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="130" X="379" H="40" Y="372" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" X="453" H="20" Y="355" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="478" H="20" Y="340" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="38" X="501" H="30" Y="322" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" X="529" H="20" Y="329" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="585" H="34" Y="302" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="640" H="20" Y="311" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="665" H="20" Y="332" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="691" H="30" Y="341" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="68" X="766" H="30" Y="321" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="728" H="30" Y="151" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="32" X="785" H="30" Y="127" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="676" H="20" Y="129" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="638" H="30" Y="152" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="760" H="30" Y="210" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="681" H="30" Y="189" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="606" H="30" Y="179" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="52" X="638" H="30" Y="199" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="70" X="37" H="30" Y="81" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="72" H="30" Y="86" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="110" H="30" Y="102" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="179" H="30" Y="114" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="222" H="30" Y="140" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="54" X="286" H="60" Y="145" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="357" H="30" Y="162" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="10" X="314" H="60" Y="152" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="12" X="410" H="60" Y="159" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="27" X="431" H="60" Y="178" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,20,0,0,0" L="54" X="447" H="40" Y="178" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="462" H="30" Y="205" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="428" H="30" Y="237" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="42" X="499" H="30" Y="232" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="546" H="20" Y="240" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,70,0,0,0" L="26" X="477" H="20" Y="186" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,60,0,0,0" L="28" X="508" H="20" Y="207" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="529" H="24" Y="228" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="26" X="541" H="20" Y="230" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="13" H="24" Y="241" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="55" H="30" Y="223" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="177" H="30" Y="260" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="100" X="94" H="30" Y="236" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="210" H="30" Y="247" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="236" H="30" Y="230" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="336" H="30" Y="217" T="0" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="258" H="15" Y="369" T="9" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="695" H="15" Y="319" T="9" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="728" H="15" Y="131" T="9" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="352" H="15" Y="141" T="9" /&gt;&lt;/S&gt;&lt;D /&gt;&lt;O /&gt;&lt;/Z&gt;&lt;/C&gt;]],mapName="peche", time=130}

}
local currentMap

function count(t, f)
local c = 0
for k,v in pairs(t) do
if f == nil or (type(f) == "function" and f(v)) then
c = c + 1
end
end
return c
end
function table.indexOf(t, value)
for i, v in ipairs(t) do
if v==value then
return i
end
end
return false
end

function startGame()
currentMap = maps[math.random(#maps)]
local m,mN
if type(currentMap) == "table" then -- если карта эвента то
m = currentMap.xml
mN = currentMap.mapName
else
m = currentMap
mN = "&lt;J&gt;[BETA] &lt;VP&gt;Golden Cheese"
end
tfm.exec.newGame(m)
tfm.exec.setUIMapName(mN)
tfm.exec.setNameColor("Dobrjik", 0xEB1D51)
end

function eventKeyboard(name,key,down,x,y)
if key==32 and players[name].fly then
tfm.exec.movePlayer(name,0,0,true,0,-50,false)
end
end
function eventPlayerLeft(playerName)
print("&lt;VP&gt;"..playerName.." &lt;R&gt;покинул комнату.")
end
function eventNewPlayer(playerName)
players[playerName] = {fly = false}
tfm.exec.bindKeyboard(playerName,32,true,true)
print("&lt;VP&gt;"..playerName.." &lt;J&gt;зашел в комнату.")
end
for name,player in pairs(tfm.get.room.playerList) do
eventNewPlayer(name)
end


function eventLoop(currentTime,remaining)
if remaining&lt;=0 then
startGame()
end
end
function eventPlayerWon(name) -- когда игрок зашел в нору
tfm.exec.setPlayerScore(name,3,true) -- добавить 3 очка
print("&lt;VP&gt;"..name.."&lt;J&gt; получил 3 очка.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventPlayerDied(name) -- когда игрок умер
tfm.exec.setPlayerScore(name,-1,true) -- отнять 1 очко
print("&lt;VP&gt;"..name.."&lt;R&gt; потерял 1 очко.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventNewGame() -- когда началась новая карта
for k,v in pairs(tfm.get.room.playerList) do -- в цикле проходимся по всем мышам
if v.isShaman then -- если нашелся шаман
tfm.exec.setPlayerScore(k,1,true) -- добавить 1 очко шаману
end
end -- конец цикла

if type(currentMap) == "table" and currentMap.time ~= nil then
tfm.exec.setGameTime(currentMap.time, true)
end

end

function eventChatCommand(name,command)
if command=="shop" then
local str=""
for id,item in pairs(shop) do
if (item.forAdmin and table.indexOf(admins, name)) or not item.forAdmin then
str=str.."&lt;a href='event:buy "..id.."'&gt;["..item.price.."] "..item.name.."&lt;/a&gt;&lt;br /&gt;"
end
end
ui.addTextArea(1, str, name, 300, 100, 200, 200, nil, nil, 1, true)
ui.addTextArea(2, "&lt;b&gt;&lt;a href='event:exit'&gt;X&lt;/a&gt;&lt;/b&gt;", name, 485, 100, nil, nil, nil, nil, 0, true)
end
end

function eventTextAreaCallback(id,name,callback)
local arg={}
for args in callback:gmatch("[^%s]+") do
table.insert(arg,args:lower())
end
local id=tonumber(arg[2])
local isAdmin = table.indexOf(admins, name)
if arg[1]=="buy" and id then
if shop[id] and isAdmin or (tfm.get.room.playerList[name].score&gt;=shop[id].price and ((shop[id].forAdmin and isAdmin) or not shop[id].forAdmin)) then
if shop[id].effect then shop[id].effect(name) end
-- Действие при покупке.
if not isAdmin then
tfm.exec.setPlayerScore(name,-shop[id].price,true)
end
end
elseif arg[1]=="exit" then
ui.removeTextArea(1, name)
ui.removeTextArea(2, name)
end
end
startGame()

у карт теперь следующая структура, maps = {1,2,3, {xml=[[...]], mapName="Название",time=140}, 4, ...}
Если хочешь добавить карту ивента, то находишь последнюю карту (сейчас это строка 20), ставишь после нее запятую и добавляешь таблицу {xml=[[...]], mapName="Название",time=140}.
Вместо XML карты можно писать номер "@123456", время не обязательно ставить. Сейчас на ивенте появляется шаман если захочешь его убрать, то нужно изменять функцию startGame

Вроде сделал, только как ее изменить можно? И не повлияет ли это на обычные карты с шаманом или другие ивенты с шаманом?
Bushmeister
« Consul »
1438148940000
    • Bushmeister#0000
    • Profil
    • Derniers messages
    • Tribu
#110
  0
Dobrjik a dit :
Smgxxx a dit :
Dobrjik a dit :
Спасибо, и наверное последний основной вопрос: можно ли сделать чтобы в ротации карт были еще и ивентовые карты на время которых бы можно было изменить название карты (там где по умолчанию Golden Cheese) и время.

Код

tfm.exec.disableAutoNewGame(true)
tfm.exec.disableAutoScore(true) -- отключить автобалы

local players = {}
local admins = {"Dobrjik"}
local shop={
{name="Умереть",price=0,effect=function(name) tfm.exec.killPlayer(name) end, forAdmin=false},
{name="Возродиться",price=6,effect=function(name) tfm.exec.respawnPlayer(name) end, forAdmin=false},
{name="Получить сыр",price=5,effect=function(name) tfm.exec.giveCheese(name) end, forAdmin=false},
{name="Получить мип",price=3,effect=function(name) tfm.exec.giveMeep(name) end, forAdmin=false},
{name="Стать шаманом",price=10,effect=function(name) tfm.exec.setShaman(name) end, forAdmin=false},
{name="Стать вампиром",price=6,effect=function(name) tfm.exec.setVampirePlayer(name) end, forAdmin=false},
{name="Переключить карту",price=0,effect=function(name) startGame() end, forAdmin=true},
{name="2 минуты до конца карты",price=0,effect=function(name) tfm.exec.setGameTime("121") end, forAdmin=true},
{name="Полет",price=0,effect=function(name) players[name].fly = not(players[name].fly) end, forAdmin=true}
}
local maps = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,
{xml=[[&lt;C&gt;&lt;P Ca="" D="x_transformice/x_maps/x_peche2015/map-aventure-1.jpg" d="x_transformice/x_maps/x_peche2015/map-aventure-1-foreground.png" DS="m;655,338,48,275,41,127" /&gt;&lt;Z&gt;&lt;S&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="420" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="-20" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="820" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="-20" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="64" H="40" Y="148" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="100" X="142" H="40" Y="120" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="76" H="60" Y="136" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-6,0,0,0" L="100" X="192" H="40" Y="98" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="120" X="232" H="30" Y="90" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="136" H="30" Y="100" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-40,0,0,0" L="24" X="165" H="10" Y="81" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="24" X="251" H="10" Y="80" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="50" X="25" H="20" Y="134" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,50,0,0,0" L="34" X="297" H="20" Y="98" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="302" H="30" Y="116" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="352" H="30" Y="129" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,60,0,0,0" L="34" X="382" H="20" Y="134" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="392" H="30" Y="154" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="414" H="30" Y="161" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="458" H="24" Y="171" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="40" X="457" H="20" Y="164" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="425" H="20" Y="157" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="451" H="20" Y="165" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="34" X="339" H="20" Y="120" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="10" X="487" H="18" Y="171" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="417" H="30" Y="195" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="450" H="40" Y="189" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,50,0,0,0" L="15" X="378" H="40" Y="216" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,12,0,0,0" L="200" X="271" H="30" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="180" X="85" H="30" Y="197" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="20" X="311" H="20" Y="229" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="14" H="20" Y="230" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="32" X="8" H="20" Y="267" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="15" X="7" H="20" Y="249" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="100" X="52" H="20" Y="289" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,20,0,0,0" L="100" X="148" H="20" Y="328" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,60,0,0,0" L="34" X="103" H="20" Y="308" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="225" H="20" Y="369" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="50" X="213" H="20" Y="357" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,20,0,0,0" L="100" X="320" H="20" Y="385" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="360" H="20" Y="383" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="458" H="20" Y="384" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="100" X="556" H="20" Y="376" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="667" H="20" Y="354" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="612" H="30" Y="361" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="15" X="716" H="30" Y="340" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="15" X="721" H="60" Y="308" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="60" X="693" H="20" Y="279" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="64" X="430" H="40" Y="300" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="70" X="500" H="34" Y="306" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-15,0,0,0" L="120" X="607" H="40" Y="270" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-35,0,0,0" L="40" X="541" H="40" Y="295" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="474" H="20" Y="299" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-6,0,0,0" L="70" X="365" H="36" Y="302" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,14,0,0,0" L="120" X="279" H="10" Y="305" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="130" X="286" H="10" Y="290" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,35,0,0,0" L="40" X="690" H="100" Y="220" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="756" H="40" Y="191" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-3,0,0,0" L="30" X="719" H="40" Y="186" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="746" H="20" Y="184" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="20" X="788" H="30" Y="153" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="779" H="10" Y="156" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="207" H="30" Y="362" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="167" H="30" Y="343" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="34" X="200" H="20" Y="348" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="86" X="587" H="30" Y="177" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="544" H="10" Y="180" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="572" H="30" Y="198" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,50,0,0,0" L="40" X="547" H="20" Y="190" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-40,0,0,0" L="40" X="601" H="20" Y="190" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="632" H="10" Y="175" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="617" H="10" Y="187" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="427" H="10" Y="282" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-20,0,0,0" L="50" X="683" H="30" Y="222" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="658" H="10" Y="230" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="683" H="10" Y="208" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="445" H="10" Y="190" T="13" /&gt;&lt;/S&gt;&lt;D /&gt;&lt;O /&gt;&lt;/Z&gt;&lt;/C&gt;]], mapName="peche", time=130},
{xml=[[&lt;C&gt;&lt;P DS="m;17,314,29,56" Ca="" D="x_transformice/x_maps/x_peche2015/map-aventure-3.jpg" d="x_transformice/x_maps/x_peche2015/map-aventure-3-foreground.png" /&gt;&lt;Z&gt;&lt;S&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="420" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="-20" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="820" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="-20" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="54" X="28" H="40" Y="345" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="54" X="68" H="40" Y="356" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="152" H="40" Y="373" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="110" X="258" H="40" Y="396" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="130" X="379" H="40" Y="372" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" X="453" H="20" Y="355" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="478" H="20" Y="340" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="38" X="501" H="30" Y="322" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" X="529" H="20" Y="329" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="585" H="34" Y="302" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="640" H="20" Y="311" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="665" H="20" Y="332" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="691" H="30" Y="341" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="68" X="766" H="30" Y="321" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="728" H="30" Y="151" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="32" X="785" H="30" Y="127" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="676" H="20" Y="129" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="638" H="30" Y="152" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="760" H="30" Y="210" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="681" H="30" Y="189" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="606" H="30" Y="179" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="52" X="638" H="30" Y="199" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="70" X="37" H="30" Y="81" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="72" H="30" Y="86" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="110" H="30" Y="102" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="179" H="30" Y="114" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="222" H="30" Y="140" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="54" X="286" H="60" Y="145" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="357" H="30" Y="162" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="10" X="314" H="60" Y="152" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="12" X="410" H="60" Y="159" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="27" X="431" H="60" Y="178" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,20,0,0,0" L="54" X="447" H="40" Y="178" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="462" H="30" Y="205" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="428" H="30" Y="237" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="42" X="499" H="30" Y="232" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="546" H="20" Y="240" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,70,0,0,0" L="26" X="477" H="20" Y="186" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,60,0,0,0" L="28" X="508" H="20" Y="207" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="529" H="24" Y="228" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="26" X="541" H="20" Y="230" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="13" H="24" Y="241" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="55" H="30" Y="223" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="177" H="30" Y="260" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="100" X="94" H="30" Y="236" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="210" H="30" Y="247" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="236" H="30" Y="230" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="336" H="30" Y="217" T="0" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="258" H="15" Y="369" T="9" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="695" H="15" Y="319" T="9" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="728" H="15" Y="131" T="9" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="352" H="15" Y="141" T="9" /&gt;&lt;/S&gt;&lt;D /&gt;&lt;O /&gt;&lt;/Z&gt;&lt;/C&gt;]],mapName="peche", time=130}

}
local currentMap

function count(t, f)
local c = 0
for k,v in pairs(t) do
if f == nil or (type(f) == "function" and f(v)) then
c = c + 1
end
end
return c
end
function table.indexOf(t, value)
for i, v in ipairs(t) do
if v==value then
return i
end
end
return false
end

function startGame()
currentMap = maps[math.random(#maps)]
local m,mN
if type(currentMap) == "table" then -- если карта эвента то
m = currentMap.xml
mN = currentMap.mapName
else
m = currentMap
mN = "&lt;J&gt;[BETA] &lt;VP&gt;Golden Cheese"
end
tfm.exec.newGame(m)
tfm.exec.setUIMapName(mN)
tfm.exec.setNameColor("Dobrjik", 0xEB1D51)
end

function eventKeyboard(name,key,down,x,y)
if key==32 and players[name].fly then
tfm.exec.movePlayer(name,0,0,true,0,-50,false)
end
end
function eventPlayerLeft(playerName)
print("&lt;VP&gt;"..playerName.." &lt;R&gt;покинул комнату.")
end
function eventNewPlayer(playerName)
players[playerName] = {fly = false}
tfm.exec.bindKeyboard(playerName,32,true,true)
print("&lt;VP&gt;"..playerName.." &lt;J&gt;зашел в комнату.")
end
for name,player in pairs(tfm.get.room.playerList) do
eventNewPlayer(name)
end


function eventLoop(currentTime,remaining)
if remaining&lt;=0 then
startGame()
end
end
function eventPlayerWon(name) -- когда игрок зашел в нору
tfm.exec.setPlayerScore(name,3,true) -- добавить 3 очка
print("&lt;VP&gt;"..name.."&lt;J&gt; получил 3 очка.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventPlayerDied(name) -- когда игрок умер
tfm.exec.setPlayerScore(name,-1,true) -- отнять 1 очко
print("&lt;VP&gt;"..name.."&lt;R&gt; потерял 1 очко.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventNewGame() -- когда началась новая карта
for k,v in pairs(tfm.get.room.playerList) do -- в цикле проходимся по всем мышам
if v.isShaman then -- если нашелся шаман
tfm.exec.setPlayerScore(k,1,true) -- добавить 1 очко шаману
end
end -- конец цикла

if type(currentMap) == "table" and currentMap.time ~= nil then
tfm.exec.setGameTime(currentMap.time, true)
end

end

function eventChatCommand(name,command)
if command=="shop" then
local str=""
for id,item in pairs(shop) do
if (item.forAdmin and table.indexOf(admins, name)) or not item.forAdmin then
str=str.."&lt;a href='event:buy "..id.."'&gt;["..item.price.."] "..item.name.."&lt;/a&gt;&lt;br /&gt;"
end
end
ui.addTextArea(1, str, name, 300, 100, 200, 200, nil, nil, 1, true)
ui.addTextArea(2, "&lt;b&gt;&lt;a href='event:exit'&gt;X&lt;/a&gt;&lt;/b&gt;", name, 485, 100, nil, nil, nil, nil, 0, true)
end
end

function eventTextAreaCallback(id,name,callback)
local arg={}
for args in callback:gmatch("[^%s]+") do
table.insert(arg,args:lower())
end
local id=tonumber(arg[2])
local isAdmin = table.indexOf(admins, name)
if arg[1]=="buy" and id then
if shop[id] and isAdmin or (tfm.get.room.playerList[name].score&gt;=shop[id].price and ((shop[id].forAdmin and isAdmin) or not shop[id].forAdmin)) then
if shop[id].effect then shop[id].effect(name) end
-- Действие при покупке.
if not isAdmin then
tfm.exec.setPlayerScore(name,-shop[id].price,true)
end
end
elseif arg[1]=="exit" then
ui.removeTextArea(1, name)
ui.removeTextArea(2, name)
end
end
startGame()

у карт теперь следующая структура, maps = {1,2,3, {xml=[[...]], mapName="Название",time=140}, 4, ...}
Если хочешь добавить карту ивента, то находишь последнюю карту (сейчас это строка 20), ставишь после нее запятую и добавляешь таблицу {xml=[[...]], mapName="Название",time=140}.
Вместо XML карты можно писать номер "@123456", время не обязательно ставить. Сейчас на ивенте появляется шаман если захочешь его убрать, то нужно изменять функцию startGame

Вроде сделал, только как ее изменить можно? И не повлияет ли это на обычные карты с шаманом или другие ивенты с шаманом?

Ну это бред рассказывать про каждую переменную. Если ты так или иначе заинтересован в программировании то учи луа по инернет учебникам. То что ты сказал - сделали. Разжевывать взаимодействие каждой переменной с другими переменными или функциями - не в наших интересах, здесь не преподают луа, а лишь выполняют заказы/фиксят баги/помогают начинающим луа кодерам, которые учат луа, а не просто смотрят в текст и пытаются что-то домыслить, думая что они так изучают язык.
Луа - простейший язык программирования. Те, кто уже программировал на любых других языках - освоят его за 2 дня. Те, кто впервые связываются с написанием кода - вполне поймут его за неделю и смогут писать свои игры. Здесь важно знать синтаксис, уделить внимание циклам и таблицам. После этого тебе не составит труда писать самому скрипты, без чьей либо помощи. Пиши любую игру, не важно что. Простенькую, но сам. Будут ошибки - попытайся их исправить в течении суток, если ничего не выйдет - тогда уже пиши на форум. А прежде чем писать на форум, прочитай статьи для чайников в луа. Я сам так начинал. В итоге уже достаточно хорошо знаю c++(CLI) c#(.NET), lua для написания игр и приложений.
Я тут и так много написал. Главное читай как можно больше и столько же пиши кода. Фиксь ошибки, изучай документацию и будет тебе счастье.
Demon
« Citoyen »
1438170360000
    • Demon#3348
    • Profil
    • Derniers messages
#111
  0
Bushmeister a dit :
Dobrjik a dit :
Smgxxx a dit :
Dobrjik a dit :
Спасибо, и наверное последний основной вопрос: можно ли сделать чтобы в ротации карт были еще и ивентовые карты на время которых бы можно было изменить название карты (там где по умолчанию Golden Cheese) и время.

Код

tfm.exec.disableAutoNewGame(true)
tfm.exec.disableAutoScore(true) -- отключить автобалы

local players = {}
local admins = {"Dobrjik"}
local shop={
{name="Умереть",price=0,effect=function(name) tfm.exec.killPlayer(name) end, forAdmin=false},
{name="Возродиться",price=6,effect=function(name) tfm.exec.respawnPlayer(name) end, forAdmin=false},
{name="Получить сыр",price=5,effect=function(name) tfm.exec.giveCheese(name) end, forAdmin=false},
{name="Получить мип",price=3,effect=function(name) tfm.exec.giveMeep(name) end, forAdmin=false},
{name="Стать шаманом",price=10,effect=function(name) tfm.exec.setShaman(name) end, forAdmin=false},
{name="Стать вампиром",price=6,effect=function(name) tfm.exec.setVampirePlayer(name) end, forAdmin=false},
{name="Переключить карту",price=0,effect=function(name) startGame() end, forAdmin=true},
{name="2 минуты до конца карты",price=0,effect=function(name) tfm.exec.setGameTime("121") end, forAdmin=true},
{name="Полет",price=0,effect=function(name) players[name].fly = not(players[name].fly) end, forAdmin=true}
}
local maps = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,
{xml=[[<C><P Ca="" D="x_transformice/x_maps/x_peche2015/map-aventure-1.jpg" d="x_transformice/x_maps/x_peche2015/map-aventure-1-foreground.png" DS="m;655,338,48,275,41,127" /><Z><S><S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="420" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="-20" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="820" H="480" Y="200" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="-20" H="480" Y="200" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="64" H="40" Y="148" T="0" /><S m="" P="0,0,0.3,0.2,-10,0,0,0" L="100" X="142" H="40" Y="120" T="0" /><S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="76" H="60" Y="136" T="0" /><S m="" P="0,0,0.3,0.2,-6,0,0,0" L="100" X="192" H="40" Y="98" T="0" /><S m="" P="0,0,0.3,0.2,4,0,0,0" L="120" X="232" H="30" Y="90" T="0" /><S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="136" H="30" Y="100" T="0" /><S m="" P="0,0,0.3,0.2,-40,0,0,0" L="24" X="165" H="10" Y="81" T="0" /><S m="" P="0,0,0.3,0.2,10,0,0,0" L="24" X="251" H="10" Y="80" T="0" /><S m="" P="0,0,0.3,0.2,10,0,0,0" L="50" X="25" H="20" Y="134" T="0" /><S m="" P="0,0,0.3,0.2,50,0,0,0" L="34" X="297" H="20" Y="98" T="0" /><S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="302" H="30" Y="116" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="352" H="30" Y="129" T="0" /><S m="" P="0,0,0.3,0.2,60,0,0,0" L="34" X="382" H="20" Y="134" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="392" H="30" Y="154" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="414" H="30" Y="161" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="458" H="24" Y="171" T="0" /><S m="" P="0,0,0.3,0.2,10,0,0,0" L="40" X="457" H="20" Y="164" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="425" H="20" Y="157" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="451" H="20" Y="165" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="34" X="339" H="20" Y="120" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="10" X="487" H="18" Y="171" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="417" H="30" Y="195" T="0" /><S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="450" H="40" Y="189" T="0" /><S m="" P="0,0,0.3,0.2,50,0,0,0" L="15" X="378" H="40" Y="216" T="0" /><S m="" P="0,0,0.3,0.2,12,0,0,0" L="200" X="271" H="30" Y="200" T="0" /><S m="" P="0,0,0.3,0.2,-10,0,0,0" L="180" X="85" H="30" Y="197" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="20" X="311" H="20" Y="229" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="14" H="20" Y="230" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="32" X="8" H="20" Y="267" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="15" X="7" H="20" Y="249" T="0" /><S m="" P="0,0,0.3,0.2,10,0,0,0" L="100" X="52" H="20" Y="289" T="0" /><S m="" P="0,0,0.3,0.2,20,0,0,0" L="100" X="148" H="20" Y="328" T="0" /><S m="" P="0,0,0.3,0.2,60,0,0,0" L="34" X="103" H="20" Y="308" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="225" H="20" Y="369" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="50" X="213" H="20" Y="357" T="0" /><S m="" P="0,0,0.3,0.2,20,0,0,0" L="100" X="320" H="20" Y="385" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="360" H="20" Y="383" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="458" H="20" Y="384" T="0" /><S m="" P="0,0,0.3,0.2,-10,0,0,0" L="100" X="556" H="20" Y="376" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="667" H="20" Y="354" T="0" /><S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="612" H="30" Y="361" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="15" X="716" H="30" Y="340" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="15" X="721" H="60" Y="308" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="60" X="693" H="20" Y="279" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="64" X="430" H="40" Y="300" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="70" X="500" H="34" Y="306" T="0" /><S m="" P="0,0,0.3,0.2,-15,0,0,0" L="120" X="607" H="40" Y="270" T="0" /><S m="" P="0,0,0.3,0.2,-35,0,0,0" L="40" X="541" H="40" Y="295" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="474" H="20" Y="299" T="0" /><S m="" P="0,0,0.3,0.2,-6,0,0,0" L="70" X="365" H="36" Y="302" T="0" /><S m="" P="0,0,0.3,0.2,14,0,0,0" L="120" X="279" H="10" Y="305" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="130" X="286" H="10" Y="290" T="0" /><S m="" P="0,0,0.3,0.2,35,0,0,0" L="40" X="690" H="100" Y="220" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="756" H="40" Y="191" T="0" /><S m="" P="0,0,0.3,0.2,-3,0,0,0" L="30" X="719" H="40" Y="186" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="746" H="20" Y="184" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="20" X="788" H="30" Y="153" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="779" H="10" Y="156" T="13" /><S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="207" H="30" Y="362" T="0" /><S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="167" H="30" Y="343" T="0" /><S m="" P="0,0,0.3,0.2,40,0,0,0" L="34" X="200" H="20" Y="348" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="86" X="587" H="30" Y="177" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="544" H="10" Y="180" T="13" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="572" H="30" Y="198" T="0" /><S m="" P="0,0,0.3,0.2,50,0,0,0" L="40" X="547" H="20" Y="190" T="0" /><S m="" P="0,0,0.3,0.2,-40,0,0,0" L="40" X="601" H="20" Y="190" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="632" H="10" Y="175" T="13" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="617" H="10" Y="187" T="13" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="427" H="10" Y="282" T="0" /><S m="" P="0,0,0.3,0.2,-20,0,0,0" L="50" X="683" H="30" Y="222" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="658" H="10" Y="230" T="13" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="683" H="10" Y="208" T="13" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="445" H="10" Y="190" T="13" /></S><D /><O /></Z></C>]], mapName="peche", time=130},
{xml=[[<C><P DS="m;17,314,29,56" Ca="" D="x_transformice/x_maps/x_peche2015/map-aventure-3.jpg" d="x_transformice/x_maps/x_peche2015/map-aventure-3-foreground.png" /><Z><S><S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="420" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="-20" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="820" H="480" Y="200" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="-20" H="480" Y="200" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="54" X="28" H="40" Y="345" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="54" X="68" H="40" Y="356" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="152" H="40" Y="373" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="110" X="258" H="40" Y="396" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="130" X="379" H="40" Y="372" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" X="453" H="20" Y="355" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="478" H="20" Y="340" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="38" X="501" H="30" Y="322" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" X="529" H="20" Y="329" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="585" H="34" Y="302" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="640" H="20" Y="311" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="665" H="20" Y="332" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="691" H="30" Y="341" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="68" X="766" H="30" Y="321" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="728" H="30" Y="151" T="0" /><S m="" P="0,0,0.3,0.2,-10,0,0,0" L="32" X="785" H="30" Y="127" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="676" H="20" Y="129" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="638" H="30" Y="152" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="760" H="30" Y="210" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="681" H="30" Y="189" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="606" H="30" Y="179" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="52" X="638" H="30" Y="199" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="70" X="37" H="30" Y="81" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="72" H="30" Y="86" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="110" H="30" Y="102" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="179" H="30" Y="114" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="222" H="30" Y="140" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="54" X="286" H="60" Y="145" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="357" H="30" Y="162" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="10" X="314" H="60" Y="152" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="12" X="410" H="60" Y="159" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="27" X="431" H="60" Y="178" T="0" /><S m="" P="0,0,0.3,0.2,20,0,0,0" L="54" X="447" H="40" Y="178" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="462" H="30" Y="205" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="428" H="30" Y="237" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="42" X="499" H="30" Y="232" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="546" H="20" Y="240" T="0" /><S m="" P="0,0,0.3,0.2,70,0,0,0" L="26" X="477" H="20" Y="186" T="0" /><S m="" P="0,0,0.3,0.2,60,0,0,0" L="28" X="508" H="20" Y="207" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="529" H="24" Y="228" T="0" /><S m="" P="0,0,0.3,0.2,40,0,0,0" L="26" X="541" H="20" Y="230" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="13" H="24" Y="241" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="55" H="30" Y="223" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="177" H="30" Y="260" T="0" /><S m="" P="0,0,0.3,0.2,30,0,0,0" L="100" X="94" H="30" Y="236" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="210" H="30" Y="247" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="236" H="30" Y="230" T="0" /><S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="336" H="30" Y="217" T="0" /><S m="" P="0,0,,,,0,0,0" L="115" X="258" H="15" Y="369" T="9" /><S m="" P="0,0,,,,0,0,0" L="115" X="695" H="15" Y="319" T="9" /><S m="" P="0,0,,,,0,0,0" L="115" X="728" H="15" Y="131" T="9" /><S m="" P="0,0,,,,0,0,0" L="115" X="352" H="15" Y="141" T="9" /></S><D /><O /></Z></C>]],mapName="peche", time=130}

}
local currentMap

function count(t, f)
local c = 0
for k,v in pairs(t) do
if f == nil or (type(f) == "function" and f(v)) then
c = c + 1
end
end
return c
end
function table.indexOf(t, value)
for i, v in ipairs(t) do
if v==value then
return i
end
end
return false
end

function startGame()
currentMap = maps[math.random(#maps)]
local m,mN
if type(currentMap) == "table" then -- если карта эвента то
m = currentMap.xml
mN = currentMap.mapName
else
m = currentMap
mN = "<J>[BETA] <VP>Golden Cheese"
end
tfm.exec.newGame(m)
tfm.exec.setUIMapName(mN)
tfm.exec.setNameColor("Dobrjik", 0xEB1D51)
end

function eventKeyboard(name,key,down,x,y)
if key==32 and players[name].fly then
tfm.exec.movePlayer(name,0,0,true,0,-50,false)
end
end
function eventPlayerLeft(playerName)
print("<VP>"..playerName.." <R>покинул комнату.")
end
function eventNewPlayer(playerName)
players[playerName] = {fly = false}
tfm.exec.bindKeyboard(playerName,32,true,true)
print("<VP>"..playerName.." <J>зашел в комнату.")
end
for name,player in pairs(tfm.get.room.playerList) do
eventNewPlayer(name)
end


function eventLoop(currentTime,remaining)
if remaining<=0 then
startGame()
end
end
function eventPlayerWon(name) -- когда игрок зашел в нору
tfm.exec.setPlayerScore(name,3,true) -- добавить 3 очка
print("<VP>"..name.."<J> получил 3 очка.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventPlayerDied(name) -- когда игрок умер
tfm.exec.setPlayerScore(name,-1,true) -- отнять 1 очко
print("<VP>"..name.."<R> потерял 1 очко.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventNewGame() -- когда началась новая карта
for k,v in pairs(tfm.get.room.playerList) do -- в цикле проходимся по всем мышам
if v.isShaman then -- если нашелся шаман
tfm.exec.setPlayerScore(k,1,true) -- добавить 1 очко шаману
end
end -- конец цикла

if type(currentMap) == "table" and currentMap.time ~= nil then
tfm.exec.setGameTime(currentMap.time, true)
end

end

function eventChatCommand(name,command)
if command=="shop" then
local str=""
for id,item in pairs(shop) do
if (item.forAdmin and table.indexOf(admins, name)) or not item.forAdmin then
str=str.."<a href='event:buy "..id.."'>["..item.price.."] "..item.name.."</a><br />"
end
end
ui.addTextArea(1, str, name, 300, 100, 200, 200, nil, nil, 1, true)
ui.addTextArea(2, "<b><a href='event:exit'>X</a></b>", name, 485, 100, nil, nil, nil, nil, 0, true)
end
end

function eventTextAreaCallback(id,name,callback)
local arg={}
for args in callback:gmatch("[^%s]+") do
table.insert(arg,args:lower())
end
local id=tonumber(arg[2])
local isAdmin = table.indexOf(admins, name)
if arg[1]=="buy" and id then
if shop[id] and isAdmin or (tfm.get.room.playerList[name].score>=shop[id].price and ((shop[id].forAdmin and isAdmin) or not shop[id].forAdmin)) then
if shop[id].effect then shop[id].effect(name) end
-- Действие при покупке.
if not isAdmin then
tfm.exec.setPlayerScore(name,-shop[id].price,true)
end
end
elseif arg[1]=="exit" then
ui.removeTextArea(1, name)
ui.removeTextArea(2, name)
end
end
startGame()

у карт теперь следующая структура, maps = {1,2,3, {xml=[[...]], mapName="Название",time=140}, 4, ...}
Если хочешь добавить карту ивента, то находишь последнюю карту (сейчас это строка 20), ставишь после нее запятую и добавляешь таблицу {xml=[[...]], mapName="Название",time=140}.
Вместо XML карты можно писать номер "@123456", время не обязательно ставить. Сейчас на ивенте появляется шаман если захочешь его убрать, то нужно изменять функцию startGame

Вроде сделал, только как ее изменить можно? И не повлияет ли это на обычные карты с шаманом или другие ивенты с шаманом?

Ну это бред рассказывать про каждую переменную. Если ты так или иначе заинтересован в программировании то учи луа по инернет учебникам. То что ты сказал - сделали. Разжевывать взаимодействие каждой переменной с другими переменными или функциями - не в наших интересах, здесь не преподают луа, а лишь выполняют заказы/фиксят баги/помогают начинающим луа кодерам, которые учат луа, а не просто смотрят в текст и пытаются что-то домыслить, думая что они так изучают язык.
Луа - простейший язык программирования. Те, кто уже программировал на любых других языках - освоят его за 2 дня. Те, кто впервые связываются с написанием кода - вполне поймут его за неделю и смогут писать свои игры. Здесь важно знать синтаксис, уделить внимание циклам и таблицам. После этого тебе не составит труда писать самому скрипты, без чьей либо помощи. Пиши любую игру, не важно что. Простенькую, но сам. Будут ошибки - попытайся их исправить в течении суток, если ничего не выйдет - тогда уже пиши на форум. А прежде чем писать на форум, прочитай статьи для чайников в луа. Я сам так начинал. В итоге уже достаточно хорошо знаю c++(CLI) c#(.NET), lua для написания игр и приложений.
Я тут и так много написал. Главное читай как можно больше и столько же пиши кода. Фиксь ошибки, изучай документацию и будет тебе счастье.

Тема называется скрипты на заказ, что я и делаю. Плюс Вы абсолютно ничем не помогли, в отличии от Smgxxx, которому большое спасибо. Я никого не заставляю разжевывать мне все и сувать в рот с ложечки, если это не в Ваших интересах то пожалуйста, я больше не буду лезть в данный топик.

Dernière modification le 1438170420000
Smgxxx
« Citoyen »
1438178400000
    • Smgxxx#0000
    • Profil
    • Derniers messages
    • Tribu
#112
  0
Dobrjik a dit :
Bushmeister a dit :
Dobrjik a dit :
Smgxxx a dit :
Dobrjik a dit :
Спасибо, и наверное последний основной вопрос: можно ли сделать чтобы в ротации карт были еще и ивентовые карты на время которых бы можно было изменить название карты (там где по умолчанию Golden Cheese) и время.

Код

tfm.exec.disableAutoNewGame(true)
tfm.exec.disableAutoScore(true) -- отключить автобалы

local players = {}
local admins = {"Dobrjik"}
local shop={
{name="Умереть",price=0,effect=function(name) tfm.exec.killPlayer(name) end, forAdmin=false},
{name="Возродиться",price=6,effect=function(name) tfm.exec.respawnPlayer(name) end, forAdmin=false},
{name="Получить сыр",price=5,effect=function(name) tfm.exec.giveCheese(name) end, forAdmin=false},
{name="Получить мип",price=3,effect=function(name) tfm.exec.giveMeep(name) end, forAdmin=false},
{name="Стать шаманом",price=10,effect=function(name) tfm.exec.setShaman(name) end, forAdmin=false},
{name="Стать вампиром",price=6,effect=function(name) tfm.exec.setVampirePlayer(name) end, forAdmin=false},
{name="Переключить карту",price=0,effect=function(name) startGame() end, forAdmin=true},
{name="2 минуты до конца карты",price=0,effect=function(name) tfm.exec.setGameTime("121") end, forAdmin=true},
{name="Полет",price=0,effect=function(name) players[name].fly = not(players[name].fly) end, forAdmin=true}
}
local maps = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,
{xml=[[&lt;C&gt;&lt;P Ca="" D="x_transformice/x_maps/x_peche2015/map-aventure-1.jpg" d="x_transformice/x_maps/x_peche2015/map-aventure-1-foreground.png" DS="m;655,338,48,275,41,127" /&gt;&lt;Z&gt;&lt;S&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="420" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="-20" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="820" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="-20" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="64" H="40" Y="148" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="100" X="142" H="40" Y="120" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="76" H="60" Y="136" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-6,0,0,0" L="100" X="192" H="40" Y="98" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="120" X="232" H="30" Y="90" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="136" H="30" Y="100" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-40,0,0,0" L="24" X="165" H="10" Y="81" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="24" X="251" H="10" Y="80" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="50" X="25" H="20" Y="134" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,50,0,0,0" L="34" X="297" H="20" Y="98" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="302" H="30" Y="116" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="352" H="30" Y="129" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,60,0,0,0" L="34" X="382" H="20" Y="134" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="392" H="30" Y="154" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="414" H="30" Y="161" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="458" H="24" Y="171" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="40" X="457" H="20" Y="164" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="425" H="20" Y="157" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="451" H="20" Y="165" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="34" X="339" H="20" Y="120" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="10" X="487" H="18" Y="171" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="417" H="30" Y="195" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="450" H="40" Y="189" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,50,0,0,0" L="15" X="378" H="40" Y="216" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,12,0,0,0" L="200" X="271" H="30" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="180" X="85" H="30" Y="197" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="20" X="311" H="20" Y="229" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="14" H="20" Y="230" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="32" X="8" H="20" Y="267" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="15" X="7" H="20" Y="249" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="100" X="52" H="20" Y="289" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,20,0,0,0" L="100" X="148" H="20" Y="328" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,60,0,0,0" L="34" X="103" H="20" Y="308" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="225" H="20" Y="369" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="50" X="213" H="20" Y="357" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,20,0,0,0" L="100" X="320" H="20" Y="385" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="360" H="20" Y="383" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="458" H="20" Y="384" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="100" X="556" H="20" Y="376" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="667" H="20" Y="354" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="612" H="30" Y="361" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="15" X="716" H="30" Y="340" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="15" X="721" H="60" Y="308" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="60" X="693" H="20" Y="279" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="64" X="430" H="40" Y="300" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="70" X="500" H="34" Y="306" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-15,0,0,0" L="120" X="607" H="40" Y="270" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-35,0,0,0" L="40" X="541" H="40" Y="295" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="474" H="20" Y="299" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-6,0,0,0" L="70" X="365" H="36" Y="302" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,14,0,0,0" L="120" X="279" H="10" Y="305" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="130" X="286" H="10" Y="290" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,35,0,0,0" L="40" X="690" H="100" Y="220" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="756" H="40" Y="191" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-3,0,0,0" L="30" X="719" H="40" Y="186" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="746" H="20" Y="184" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="20" X="788" H="30" Y="153" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="779" H="10" Y="156" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="207" H="30" Y="362" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="167" H="30" Y="343" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="34" X="200" H="20" Y="348" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="86" X="587" H="30" Y="177" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="544" H="10" Y="180" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="572" H="30" Y="198" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,50,0,0,0" L="40" X="547" H="20" Y="190" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-40,0,0,0" L="40" X="601" H="20" Y="190" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="632" H="10" Y="175" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="617" H="10" Y="187" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="427" H="10" Y="282" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-20,0,0,0" L="50" X="683" H="30" Y="222" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="658" H="10" Y="230" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="683" H="10" Y="208" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="445" H="10" Y="190" T="13" /&gt;&lt;/S&gt;&lt;D /&gt;&lt;O /&gt;&lt;/Z&gt;&lt;/C&gt;]], mapName="peche", time=130},
{xml=[[&lt;C&gt;&lt;P DS="m;17,314,29,56" Ca="" D="x_transformice/x_maps/x_peche2015/map-aventure-3.jpg" d="x_transformice/x_maps/x_peche2015/map-aventure-3-foreground.png" /&gt;&lt;Z&gt;&lt;S&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="420" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="-20" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="820" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="-20" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="54" X="28" H="40" Y="345" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="54" X="68" H="40" Y="356" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="152" H="40" Y="373" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="110" X="258" H="40" Y="396" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="130" X="379" H="40" Y="372" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" X="453" H="20" Y="355" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="478" H="20" Y="340" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="38" X="501" H="30" Y="322" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" X="529" H="20" Y="329" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="585" H="34" Y="302" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="640" H="20" Y="311" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="665" H="20" Y="332" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="691" H="30" Y="341" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="68" X="766" H="30" Y="321" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="728" H="30" Y="151" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="32" X="785" H="30" Y="127" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="676" H="20" Y="129" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="638" H="30" Y="152" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="760" H="30" Y="210" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="681" H="30" Y="189" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="606" H="30" Y="179" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="52" X="638" H="30" Y="199" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="70" X="37" H="30" Y="81" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="72" H="30" Y="86" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="110" H="30" Y="102" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="179" H="30" Y="114" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="222" H="30" Y="140" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="54" X="286" H="60" Y="145" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="357" H="30" Y="162" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="10" X="314" H="60" Y="152" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="12" X="410" H="60" Y="159" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="27" X="431" H="60" Y="178" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,20,0,0,0" L="54" X="447" H="40" Y="178" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="462" H="30" Y="205" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="428" H="30" Y="237" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="42" X="499" H="30" Y="232" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="546" H="20" Y="240" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,70,0,0,0" L="26" X="477" H="20" Y="186" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,60,0,0,0" L="28" X="508" H="20" Y="207" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="529" H="24" Y="228" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="26" X="541" H="20" Y="230" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="13" H="24" Y="241" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="55" H="30" Y="223" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="177" H="30" Y="260" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="100" X="94" H="30" Y="236" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="210" H="30" Y="247" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="236" H="30" Y="230" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="336" H="30" Y="217" T="0" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="258" H="15" Y="369" T="9" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="695" H="15" Y="319" T="9" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="728" H="15" Y="131" T="9" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="352" H="15" Y="141" T="9" /&gt;&lt;/S&gt;&lt;D /&gt;&lt;O /&gt;&lt;/Z&gt;&lt;/C&gt;]],mapName="peche", time=130}

}
local currentMap

function count(t, f)
local c = 0
for k,v in pairs(t) do
if f == nil or (type(f) == "function" and f(v)) then
c = c + 1
end
end
return c
end
function table.indexOf(t, value)
for i, v in ipairs(t) do
if v==value then
return i
end
end
return false
end

function startGame()
currentMap = maps[math.random(#maps)]
local m,mN
if type(currentMap) == "table" then -- если карта эвента то
m = currentMap.xml
mN = currentMap.mapName
else
m = currentMap
mN = "&lt;J&gt;[BETA] &lt;VP&gt;Golden Cheese"
end
tfm.exec.newGame(m)
tfm.exec.setUIMapName(mN)
tfm.exec.setNameColor("Dobrjik", 0xEB1D51)
end

function eventKeyboard(name,key,down,x,y)
if key==32 and players[name].fly then
tfm.exec.movePlayer(name,0,0,true,0,-50,false)
end
end
function eventPlayerLeft(playerName)
print("&lt;VP&gt;"..playerName.." &lt;R&gt;покинул комнату.")
end
function eventNewPlayer(playerName)
players[playerName] = {fly = false}
tfm.exec.bindKeyboard(playerName,32,true,true)
print("&lt;VP&gt;"..playerName.." &lt;J&gt;зашел в комнату.")
end
for name,player in pairs(tfm.get.room.playerList) do
eventNewPlayer(name)
end


function eventLoop(currentTime,remaining)
if remaining&lt;=0 then
startGame()
end
end
function eventPlayerWon(name) -- когда игрок зашел в нору
tfm.exec.setPlayerScore(name,3,true) -- добавить 3 очка
print("&lt;VP&gt;"..name.."&lt;J&gt; получил 3 очка.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventPlayerDied(name) -- когда игрок умер
tfm.exec.setPlayerScore(name,-1,true) -- отнять 1 очко
print("&lt;VP&gt;"..name.."&lt;R&gt; потерял 1 очко.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventNewGame() -- когда началась новая карта
for k,v in pairs(tfm.get.room.playerList) do -- в цикле проходимся по всем мышам
if v.isShaman then -- если нашелся шаман
tfm.exec.setPlayerScore(k,1,true) -- добавить 1 очко шаману
end
end -- конец цикла

if type(currentMap) == "table" and currentMap.time ~= nil then
tfm.exec.setGameTime(currentMap.time, true)
end

end

function eventChatCommand(name,command)
if command=="shop" then
local str=""
for id,item in pairs(shop) do
if (item.forAdmin and table.indexOf(admins, name)) or not item.forAdmin then
str=str.."&lt;a href='event:buy "..id.."'&gt;["..item.price.."] "..item.name.."&lt;/a&gt;&lt;br /&gt;"
end
end
ui.addTextArea(1, str, name, 300, 100, 200, 200, nil, nil, 1, true)
ui.addTextArea(2, "&lt;b&gt;&lt;a href='event:exit'&gt;X&lt;/a&gt;&lt;/b&gt;", name, 485, 100, nil, nil, nil, nil, 0, true)
end
end

function eventTextAreaCallback(id,name,callback)
local arg={}
for args in callback:gmatch("[^%s]+") do
table.insert(arg,args:lower())
end
local id=tonumber(arg[2])
local isAdmin = table.indexOf(admins, name)
if arg[1]=="buy" and id then
if shop[id] and isAdmin or (tfm.get.room.playerList[name].score&gt;=shop[id].price and ((shop[id].forAdmin and isAdmin) or not shop[id].forAdmin)) then
if shop[id].effect then shop[id].effect(name) end
-- Действие при покупке.
if not isAdmin then
tfm.exec.setPlayerScore(name,-shop[id].price,true)
end
end
elseif arg[1]=="exit" then
ui.removeTextArea(1, name)
ui.removeTextArea(2, name)
end
end
startGame()

у карт теперь следующая структура, maps = {1,2,3, {xml=[[...]], mapName="Название",time=140}, 4, ...}
Если хочешь добавить карту ивента, то находишь последнюю карту (сейчас это строка 20), ставишь после нее запятую и добавляешь таблицу {xml=[[...]], mapName="Название",time=140}.
Вместо XML карты можно писать номер "@123456", время не обязательно ставить. Сейчас на ивенте появляется шаман если захочешь его убрать, то нужно изменять функцию startGame

Вроде сделал, только как ее изменить можно? И не повлияет ли это на обычные карты с шаманом или другие ивенты с шаманом?

Ну это бред рассказывать про каждую переменную. Если ты так или иначе заинтересован в программировании то учи луа по инернет учебникам. То что ты сказал - сделали. Разжевывать взаимодействие каждой переменной с другими переменными или функциями - не в наших интересах, здесь не преподают луа, а лишь выполняют заказы/фиксят баги/помогают начинающим луа кодерам, которые учат луа, а не просто смотрят в текст и пытаются что-то домыслить, думая что они так изучают язык.
Луа - простейший язык программирования. Те, кто уже программировал на любых других языках - освоят его за 2 дня. Те, кто впервые связываются с написанием кода - вполне поймут его за неделю и смогут писать свои игры. Здесь важно знать синтаксис, уделить внимание циклам и таблицам. После этого тебе не составит труда писать самому скрипты, без чьей либо помощи. Пиши любую игру, не важно что. Простенькую, но сам. Будут ошибки - попытайся их исправить в течении суток, если ничего не выйдет - тогда уже пиши на форум. А прежде чем писать на форум, прочитай статьи для чайников в луа. Я сам так начинал. В итоге уже достаточно хорошо знаю c++(CLI) c#(.NET), lua для написания игр и приложений.
Я тут и так много написал. Главное читай как можно больше и столько же пиши кода. Фиксь ошибки, изучай документацию и будет тебе счастье.

Тема называется скрипты на заказ, что я и делаю. Плюс Вы абсолютно ничем не помогли, в отличии от Smgxxx, которому большое спасибо. Я никого не заставляю разжевывать мне все и сувать в рот с ложечки, если это не в Ваших интересах то пожалуйста, я больше не буду лезть в данный топик.

Да все хорошо, можешь написать мне в личку если не хочешь писать в этот раздел, как пытался что не получилось.
ЗЫ. я помню как я писал на форуме бушу смотря на его код =), теперь мне стыдно не много.
Bushmeister
« Consul »
1438198860000
    • Bushmeister#0000
    • Profil
    • Derniers messages
    • Tribu
#113
  0
Dobrjik a dit :
Bushmeister a dit :
Dobrjik a dit :
Smgxxx a dit :
Dobrjik a dit :
Спасибо, и наверное последний основной вопрос: можно ли сделать чтобы в ротации карт были еще и ивентовые карты на время которых бы можно было изменить название карты (там где по умолчанию Golden Cheese) и время.

Код

tfm.exec.disableAutoNewGame(true)
tfm.exec.disableAutoScore(true) -- отключить автобалы

local players = {}
local admins = {"Dobrjik"}
local shop={
{name="Умереть",price=0,effect=function(name) tfm.exec.killPlayer(name) end, forAdmin=false},
{name="Возродиться",price=6,effect=function(name) tfm.exec.respawnPlayer(name) end, forAdmin=false},
{name="Получить сыр",price=5,effect=function(name) tfm.exec.giveCheese(name) end, forAdmin=false},
{name="Получить мип",price=3,effect=function(name) tfm.exec.giveMeep(name) end, forAdmin=false},
{name="Стать шаманом",price=10,effect=function(name) tfm.exec.setShaman(name) end, forAdmin=false},
{name="Стать вампиром",price=6,effect=function(name) tfm.exec.setVampirePlayer(name) end, forAdmin=false},
{name="Переключить карту",price=0,effect=function(name) startGame() end, forAdmin=true},
{name="2 минуты до конца карты",price=0,effect=function(name) tfm.exec.setGameTime("121") end, forAdmin=true},
{name="Полет",price=0,effect=function(name) players[name].fly = not(players[name].fly) end, forAdmin=true}
}
local maps = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,
{xml=[[&lt;C&gt;&lt;P Ca="" D="x_transformice/x_maps/x_peche2015/map-aventure-1.jpg" d="x_transformice/x_maps/x_peche2015/map-aventure-1-foreground.png" DS="m;655,338,48,275,41,127" /&gt;&lt;Z&gt;&lt;S&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="420" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="-20" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="820" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="-20" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="64" H="40" Y="148" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="100" X="142" H="40" Y="120" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="76" H="60" Y="136" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-6,0,0,0" L="100" X="192" H="40" Y="98" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="120" X="232" H="30" Y="90" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="136" H="30" Y="100" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-40,0,0,0" L="24" X="165" H="10" Y="81" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="24" X="251" H="10" Y="80" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="50" X="25" H="20" Y="134" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,50,0,0,0" L="34" X="297" H="20" Y="98" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="302" H="30" Y="116" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="352" H="30" Y="129" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,60,0,0,0" L="34" X="382" H="20" Y="134" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="392" H="30" Y="154" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="414" H="30" Y="161" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="458" H="24" Y="171" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="40" X="457" H="20" Y="164" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="425" H="20" Y="157" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="451" H="20" Y="165" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="34" X="339" H="20" Y="120" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="10" X="487" H="18" Y="171" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="50" X="417" H="30" Y="195" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="450" H="40" Y="189" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,50,0,0,0" L="15" X="378" H="40" Y="216" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,12,0,0,0" L="200" X="271" H="30" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="180" X="85" H="30" Y="197" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="20" X="311" H="20" Y="229" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="14" H="20" Y="230" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="32" X="8" H="20" Y="267" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="15" X="7" H="20" Y="249" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,10,0,0,0" L="100" X="52" H="20" Y="289" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,20,0,0,0" L="100" X="148" H="20" Y="328" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,60,0,0,0" L="34" X="103" H="20" Y="308" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="225" H="20" Y="369" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="50" X="213" H="20" Y="357" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,20,0,0,0" L="100" X="320" H="20" Y="385" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="360" H="20" Y="383" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="458" H="20" Y="384" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="100" X="556" H="20" Y="376" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="667" H="20" Y="354" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="15" X="612" H="30" Y="361" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="15" X="716" H="30" Y="340" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="15" X="721" H="60" Y="308" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="60" X="693" H="20" Y="279" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="64" X="430" H="40" Y="300" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="70" X="500" H="34" Y="306" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-15,0,0,0" L="120" X="607" H="40" Y="270" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-35,0,0,0" L="40" X="541" H="40" Y="295" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="474" H="20" Y="299" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-6,0,0,0" L="70" X="365" H="36" Y="302" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,14,0,0,0" L="120" X="279" H="10" Y="305" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="130" X="286" H="10" Y="290" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,35,0,0,0" L="40" X="690" H="100" Y="220" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="756" H="40" Y="191" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-3,0,0,0" L="30" X="719" H="40" Y="186" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="40" X="746" H="20" Y="184" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="20" X="788" H="30" Y="153" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="779" H="10" Y="156" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="207" H="30" Y="362" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,4,0,0,0" L="50" X="167" H="30" Y="343" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="34" X="200" H="20" Y="348" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="86" X="587" H="30" Y="177" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="544" H="10" Y="180" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="572" H="30" Y="198" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,50,0,0,0" L="40" X="547" H="20" Y="190" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-40,0,0,0" L="40" X="601" H="20" Y="190" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="632" H="10" Y="175" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="617" H="10" Y="187" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="427" H="10" Y="282" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-20,0,0,0" L="50" X="683" H="30" Y="222" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="658" H="10" Y="230" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="13" o="ff0000" X="683" H="10" Y="208" T="13" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" o="ff0000" X="445" H="10" Y="190" T="13" /&gt;&lt;/S&gt;&lt;D /&gt;&lt;O /&gt;&lt;/Z&gt;&lt;/C&gt;]], mapName="peche", time=130},
{xml=[[&lt;C&gt;&lt;P DS="m;17,314,29,56" Ca="" D="x_transformice/x_maps/x_peche2015/map-aventure-3.jpg" d="x_transformice/x_maps/x_peche2015/map-aventure-3-foreground.png" /&gt;&lt;Z&gt;&lt;S&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="420" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="800" X="400" H="40" Y="-20" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="820" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="40" X="-20" H="480" Y="200" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="54" X="28" H="40" Y="345" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="54" X="68" H="40" Y="356" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="152" H="40" Y="373" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="110" X="258" H="40" Y="396" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="130" X="379" H="40" Y="372" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" X="453" H="20" Y="355" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="478" H="20" Y="340" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="38" X="501" H="30" Y="322" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="18" X="529" H="20" Y="329" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="585" H="34" Y="302" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="640" H="20" Y="311" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="30" X="665" H="20" Y="332" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="691" H="30" Y="341" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="68" X="766" H="30" Y="321" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="728" H="30" Y="151" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,-10,0,0,0" L="32" X="785" H="30" Y="127" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="676" H="20" Y="129" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="638" H="30" Y="152" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="760" H="30" Y="210" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="681" H="30" Y="189" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="606" H="30" Y="179" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="52" X="638" H="30" Y="199" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="70" X="37" H="30" Y="81" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="80" X="72" H="30" Y="86" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="110" H="30" Y="102" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="179" H="30" Y="114" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="222" H="30" Y="140" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="54" X="286" H="60" Y="145" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="357" H="30" Y="162" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="10" X="314" H="60" Y="152" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="12" X="410" H="60" Y="159" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="27" X="431" H="60" Y="178" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,20,0,0,0" L="54" X="447" H="40" Y="178" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="94" X="462" H="30" Y="205" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="428" H="30" Y="237" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="42" X="499" H="30" Y="232" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="546" H="20" Y="240" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,70,0,0,0" L="26" X="477" H="20" Y="186" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,60,0,0,0" L="28" X="508" H="20" Y="207" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="529" H="24" Y="228" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,40,0,0,0" L="26" X="541" H="20" Y="230" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="26" X="13" H="24" Y="241" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="100" X="55" H="30" Y="223" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="177" H="30" Y="260" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,30,0,0,0" L="100" X="94" H="30" Y="236" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="210" H="30" Y="247" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="236" H="30" Y="230" T="0" /&gt;&lt;S m="" P="0,0,0.3,0.2,0,0,0,0" L="115" X="336" H="30" Y="217" T="0" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="258" H="15" Y="369" T="9" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="695" H="15" Y="319" T="9" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="728" H="15" Y="131" T="9" /&gt;&lt;S m="" P="0,0,,,,0,0,0" L="115" X="352" H="15" Y="141" T="9" /&gt;&lt;/S&gt;&lt;D /&gt;&lt;O /&gt;&lt;/Z&gt;&lt;/C&gt;]],mapName="peche", time=130}

}
local currentMap

function count(t, f)
local c = 0
for k,v in pairs(t) do
if f == nil or (type(f) == "function" and f(v)) then
c = c + 1
end
end
return c
end
function table.indexOf(t, value)
for i, v in ipairs(t) do
if v==value then
return i
end
end
return false
end

function startGame()
currentMap = maps[math.random(#maps)]
local m,mN
if type(currentMap) == "table" then -- если карта эвента то
m = currentMap.xml
mN = currentMap.mapName
else
m = currentMap
mN = "&lt;J&gt;[BETA] &lt;VP&gt;Golden Cheese"
end
tfm.exec.newGame(m)
tfm.exec.setUIMapName(mN)
tfm.exec.setNameColor("Dobrjik", 0xEB1D51)
end

function eventKeyboard(name,key,down,x,y)
if key==32 and players[name].fly then
tfm.exec.movePlayer(name,0,0,true,0,-50,false)
end
end
function eventPlayerLeft(playerName)
print("&lt;VP&gt;"..playerName.." &lt;R&gt;покинул комнату.")
end
function eventNewPlayer(playerName)
players[playerName] = {fly = false}
tfm.exec.bindKeyboard(playerName,32,true,true)
print("&lt;VP&gt;"..playerName.." &lt;J&gt;зашел в комнату.")
end
for name,player in pairs(tfm.get.room.playerList) do
eventNewPlayer(name)
end


function eventLoop(currentTime,remaining)
if remaining&lt;=0 then
startGame()
end
end
function eventPlayerWon(name) -- когда игрок зашел в нору
tfm.exec.setPlayerScore(name,3,true) -- добавить 3 очка
print("&lt;VP&gt;"..name.."&lt;J&gt; получил 3 очка.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventPlayerDied(name) -- когда игрок умер
tfm.exec.setPlayerScore(name,-1,true) -- отнять 1 очко
print("&lt;VP&gt;"..name.."&lt;R&gt; потерял 1 очко.")
local aliveMouse = count(tfm.get.room.playerList, function(v) return not v.isDead end)
if aliveMouse == 0 then
startGame()
end
end
function eventNewGame() -- когда началась новая карта
for k,v in pairs(tfm.get.room.playerList) do -- в цикле проходимся по всем мышам
if v.isShaman then -- если нашелся шаман
tfm.exec.setPlayerScore(k,1,true) -- добавить 1 очко шаману
end
end -- конец цикла

if type(currentMap) == "table" and currentMap.time ~= nil then
tfm.exec.setGameTime(currentMap.time, true)
end

end

function eventChatCommand(name,command)
if command=="shop" then
local str=""
for id,item in pairs(shop) do
if (item.forAdmin and table.indexOf(admins, name)) or not item.forAdmin then
str=str.."&lt;a href='event:buy "..id.."'&gt;["..item.price.."] "..item.name.."&lt;/a&gt;&lt;br /&gt;"
end
end
ui.addTextArea(1, str, name, 300, 100, 200, 200, nil, nil, 1, true)
ui.addTextArea(2, "&lt;b&gt;&lt;a href='event:exit'&gt;X&lt;/a&gt;&lt;/b&gt;", name, 485, 100, nil, nil, nil, nil, 0, true)
end
end

function eventTextAreaCallback(id,name,callback)
local arg={}
for args in callback:gmatch("[^%s]+") do
table.insert(arg,args:lower())
end
local id=tonumber(arg[2])
local isAdmin = table.indexOf(admins, name)
if arg[1]=="buy" and id then
if shop[id] and isAdmin or (tfm.get.room.playerList[name].score&gt;=shop[id].price and ((shop[id].forAdmin and isAdmin) or not shop[id].forAdmin)) then
if shop[id].effect then shop[id].effect(name) end
-- Действие при покупке.
if not isAdmin then
tfm.exec.setPlayerScore(name,-shop[id].price,true)
end
end
elseif arg[1]=="exit" then
ui.removeTextArea(1, name)
ui.removeTextArea(2, name)
end
end
startGame()

у карт теперь следующая структура, maps = {1,2,3, {xml=[[...]], mapName="Название",time=140}, 4, ...}
Если хочешь добавить карту ивента, то находишь последнюю карту (сейчас это строка 20), ставишь после нее запятую и добавляешь таблицу {xml=[[...]], mapName="Название",time=140}.
Вместо XML карты можно писать номер "@123456", время не обязательно ставить. Сейчас на ивенте появляется шаман если захочешь его убрать, то нужно изменять функцию startGame

Вроде сделал, только как ее изменить можно? И не повлияет ли это на обычные карты с шаманом или другие ивенты с шаманом?

Ну это бред рассказывать про каждую переменную. Если ты так или иначе заинтересован в программировании то учи луа по инернет учебникам. То что ты сказал - сделали. Разжевывать взаимодействие каждой переменной с другими переменными или функциями - не в наших интересах, здесь не преподают луа, а лишь выполняют заказы/фиксят баги/помогают начинающим луа кодерам, которые учат луа, а не просто смотрят в текст и пытаются что-то домыслить, думая что они так изучают язык.
Луа - простейший язык программирования. Те, кто уже программировал на любых других языках - освоят его за 2 дня. Те, кто впервые связываются с написанием кода - вполне поймут его за неделю и смогут писать свои игры. Здесь важно знать синтаксис, уделить внимание циклам и таблицам. После этого тебе не составит труда писать самому скрипты, без чьей либо помощи. Пиши любую игру, не важно что. Простенькую, но сам. Будут ошибки - попытайся их исправить в течении суток, если ничего не выйдет - тогда уже пиши на форум. А прежде чем писать на форум, прочитай статьи для чайников в луа. Я сам так начинал. В итоге уже достаточно хорошо знаю c++(CLI) c#(.NET), lua для написания игр и приложений.
Я тут и так много написал. Главное читай как можно больше и столько же пиши кода. Фиксь ошибки, изучай документацию и будет тебе счастье.

Тема называется скрипты на заказ, что я и делаю. Плюс Вы абсолютно ничем не помогли, в отличии от Smgxxx, которому большое спасибо. Я никого не заставляю разжевывать мне все и сувать в рот с ложечки, если это не в Ваших интересах то пожалуйста, я больше не буду лезть в данный топик.

Заказывай сколько хочешь, но если ты собираешься изменять скрипт или узнавать как он взаимодействует, будь добр, почитай основы луа. Самому же будет проще и интереснее. Сам пойми, не так уж просто рассказывать как работает скрипт человеку, который мало знает о языке на котором он написан.
Я просто не совсем понимаю. Ты не просто заказываешь скрипты, получаешь их, и забыл. Как я вижу, ты хочешь их изменять, понимать как они работают, создать что-то свое(?). Вот я и говорю - учи луа! Это увлекательно, а мышач предоставляет хороший апи для удобного изучения языка и создания мини-игр. Если хочешь, я могу достать интересные статьи в которых все понятно написано.
a dit :
ЗЫ. я помню как я писал на форуме бушу смотря на его код =), теперь мне стыдно не много.

Я сгораю со стыда когда пересматриваю свои скрипты в мышаче...
Lexxy
« Citoyen »
1438427520000
    • Lexxy#0000
    • Profil
    • Derniers messages
#114
  0
Нужен скрипт для реализации клан вара)) раньше была такая комната, в которой было 2 команды, синие и красные, по 5 мышей, и за каждые 1-3 места командам начислялись очки, может есть уже такой скрипт или рума, если нет, то попробовать реализовать)) оч надо
Gamergema
« Citoyen »
1447831920000
    • Gamergema#0000
    • Profil
    • Derniers messages
#115
  0
1)Gamergema
2)Можно сделать что-то, ну типо, дождя из сыра, такое можно устроить?..
Bushmeister
« Consul »
1447836600000
    • Bushmeister#0000
    • Profil
    • Derniers messages
    • Tribu
#116
  0
Lexxy a dit :
Нужен скрипт для реализации клан вара)) раньше была такая комната, в которой было 2 команды, синие и красные, по 5 мышей, и за каждые 1-3 места командам начислялись очки, может есть уже такой скрипт или рума, если нет, то попробовать реализовать)) оч надо

Есть такой, но пока не для паблик румы, а для битв команда против команды. Сейчас играем турнир КВ с ним. Подробнее тут.


gamergema a dit :
1)Gamergema
2)Можно сделать что-то, ну типо, дождя из сыра, такое можно устроить?..

В трайб комнате - нет.
Smgxxx
« Citoyen »
1447858920000
    • Smgxxx#0000
    • Profil
    • Derniers messages
    • Tribu
#117
  0
gamergema a dit :
1)Gamergema
2)Можно сделать что-то, ну типо, дождя из сыра, такое можно устроить?..

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

Dernière modification le 1447858980000
Bushmeister
« Consul »
1447860480000
    • Bushmeister#0000
    • Profil
    • Derniers messages
    • Tribu
#118
  0
Smgxxx a dit :
gamergema a dit :
1)Gamergema
2)Можно сделать что-то, ну типо, дождя из сыра, такое можно устроить?..

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

Будет большая нагрузка при прорисовке кучи линий для каждого падающего сыра. Не удивлюсь, если скрипт крашнется через минуту с ошибкой слишком чатого вызова функции.
Elmikle
« Consul »
1447879380000
    • Elmikle#0000
    • Profil
    • Derniers messages
    • Tribu
#119
  0
Модуль с поддержкой эдакого кастомного "мап-пака". После прохождения каждой карты выводится затраченной время (по аналогии с рекордрс) и суммарное время с начала отсчета. После прохождения серии карт целиком, выводится общий результат.
Карты идут в определенном порядке и переключаются только по прохождению. В случае смерти игрока - моментальный респавн.
Короче, что-то по типу сплитов для спидранов

Dernière modification le 1447879440000
Smgxxx
« Citoyen »
1447907100000
    • Smgxxx#0000
    • Profil
    • Derniers messages
    • Tribu
#120
  0
Bushmeister a dit :
Smgxxx a dit :
gamergema a dit :
1)Gamergema
2)Можно сделать что-то, ну типо, дождя из сыра, такое можно устроить?..

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

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

Не факт, надо знать что означает сырный дождь, а потом уже думать о нагрузке
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • [Scriptmeister] Небольшие скрипты на заказ
« ‹ 6 / 10 › »
© Atelier801 2018

Equipe Conditions Générales d'Utilisation Politique de Confidentialité Contact

Version 1.27