[Scriptmeister] Небольшие скрипты на заказ |
0 | ||
Smgxxx a dit : Спасибо, не заметил даже. Кстати, я если даю себе много очков (админ всетаки, для проверок) то выходит что я всегда шаман, так вот, можно ли как-то сделать чтобы очков было много, но шаманили все по очереди, ну или на худой конец чтобы для админов все команды были бесплатны не добавляя новых пунктов в магазин. |
Smgxxx « Citoyen » 1437285960000
| 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
| 0 | ||
Bushmeister a dit : Тот, кто впишет смешые буковки своего ника в соответствующую строку. |
Smgxxx « Citoyen » 1437886200000
| 0 | ||
Fentesa a dit : Держи код 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
| 0 | ||
Жаль что в module team никто кто разберается в lua с нашего сервера не пойдет :( |
Bushmeister « Consul » 1437987660000
| 0 | ||
kitemite a dit : Ну почему никто? Я знаю несколько человек с ру сервера, которые состоят в module team. Другое дело, что существуют скрытые члены команды(кем они и являются), которые не хотят чтобы их доставали с просьбами запустить модуль. |
0 | ||
Smgxxx a dit : Спасибо, и наверное последний основной вопрос: можно ли сделать чтобы в ротации карт были еще и ивентовые карты на время которых бы можно было изменить название карты (там где по умолчанию Golden Cheese) и время. |
Smgxxx « Citoyen » 1438059180000
| 0 | ||
Dobrjik a dit : Код 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 |
0 | ||
Smgxxx a dit : Вроде сделал, только как ее изменить можно? И не повлияет ли это на обычные карты с шаманом или другие ивенты с шаманом? |
Bushmeister « Consul » 1438148940000
| 0 | ||
Dobrjik a dit : Ну это бред рассказывать про каждую переменную. Если ты так или иначе заинтересован в программировании то учи луа по инернет учебникам. То что ты сказал - сделали. Разжевывать взаимодействие каждой переменной с другими переменными или функциями - не в наших интересах, здесь не преподают луа, а лишь выполняют заказы/фиксят баги/помогают начинающим луа кодерам, которые учат луа, а не просто смотрят в текст и пытаются что-то домыслить, думая что они так изучают язык. Луа - простейший язык программирования. Те, кто уже программировал на любых других языках - освоят его за 2 дня. Те, кто впервые связываются с написанием кода - вполне поймут его за неделю и смогут писать свои игры. Здесь важно знать синтаксис, уделить внимание циклам и таблицам. После этого тебе не составит труда писать самому скрипты, без чьей либо помощи. Пиши любую игру, не важно что. Простенькую, но сам. Будут ошибки - попытайся их исправить в течении суток, если ничего не выйдет - тогда уже пиши на форум. А прежде чем писать на форум, прочитай статьи для чайников в луа. Я сам так начинал. В итоге уже достаточно хорошо знаю c++(CLI) c#(.NET), lua для написания игр и приложений. Я тут и так много написал. Главное читай как можно больше и столько же пиши кода. Фиксь ошибки, изучай документацию и будет тебе счастье. |
0 | ||
Bushmeister a dit : Тема называется скрипты на заказ, что я и делаю. Плюс Вы абсолютно ничем не помогли, в отличии от Smgxxx, которому большое спасибо. Я никого не заставляю разжевывать мне все и сувать в рот с ложечки, если это не в Ваших интересах то пожалуйста, я больше не буду лезть в данный топик. Dernière modification le 1438170420000 |
Smgxxx « Citoyen » 1438178400000
| 0 | ||
Dobrjik a dit : Да все хорошо, можешь написать мне в личку если не хочешь писать в этот раздел, как пытался что не получилось. ЗЫ. я помню как я писал на форуме бушу смотря на его код =), теперь мне стыдно не много. |
Bushmeister « Consul » 1438198860000
| 0 | ||
Dobrjik a dit : Заказывай сколько хочешь, но если ты собираешься изменять скрипт или узнавать как он взаимодействует, будь добр, почитай основы луа. Самому же будет проще и интереснее. Сам пойми, не так уж просто рассказывать как работает скрипт человеку, который мало знает о языке на котором он написан. Я просто не совсем понимаю. Ты не просто заказываешь скрипты, получаешь их, и забыл. Как я вижу, ты хочешь их изменять, понимать как они работают, создать что-то свое(?). Вот я и говорю - учи луа! Это увлекательно, а мышач предоставляет хороший апи для удобного изучения языка и создания мини-игр. Если хочешь, я могу достать интересные статьи в которых все понятно написано. a dit : Я сгораю со стыда когда пересматриваю свои скрипты в мышаче... |
0 | ||
Нужен скрипт для реализации клан вара)) раньше была такая комната, в которой было 2 команды, синие и красные, по 5 мышей, и за каждые 1-3 места командам начислялись очки, может есть уже такой скрипт или рума, если нет, то попробовать реализовать)) оч надо |
Gamergema « Citoyen » 1447831920000
| 0 | ||
1)Gamergema 2)Можно сделать что-то, ну типо, дождя из сыра, такое можно устроить?.. |
Bushmeister « Consul » 1447836600000
| 0 | ||
Lexxy a dit : Есть такой, но пока не для паблик румы, а для битв команда против команды. Сейчас играем турнир КВ с ним. Подробнее тут. gamergema a dit : В трайб комнате - нет. |
Smgxxx « Citoyen » 1447858920000
| 0 | ||
gamergema a dit : нужны подробности, скорее всего такое можно сделать даже для трайба. правда нужен спец по виприну с навыками рисования Dernière modification le 1447858980000 |
Bushmeister « Consul » 1447860480000
| 0 | ||
Smgxxx a dit : Будет большая нагрузка при прорисовке кучи линий для каждого падающего сыра. Не удивлюсь, если скрипт крашнется через минуту с ошибкой слишком чатого вызова функции. |
Elmikle « Consul » 1447879380000
| 0 | ||
Модуль с поддержкой эдакого кастомного "мап-пака". После прохождения каждой карты выводится затраченной время (по аналогии с рекордрс) и суммарное время с начала отсчета. После прохождения серии карт целиком, выводится общий результат. Карты идут в определенном порядке и переключаются только по прохождению. В случае смерти игрока - моментальный респавн. Короче, что-то по типу сплитов для спидранов Dernière modification le 1447879440000 |
Smgxxx « Citoyen » 1447907100000
| 0 | ||
Bushmeister a dit : Не факт, надо знать что означает сырный дождь, а потом уже думать о нагрузке |