Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- tribos={
- owners={},
- tribes={},
- }
- player={}
- tfm.exec.disableAutoNewGame()
- textarea=ui.addTextArea function ui.addTextArea(id,text,targetPlayer,x,y,width,height,backgroundColor,borderColor,backgroundAlpha,emboss,active) if active then textarea(6969+id,"",targetPlayer,x,y+1,width,height,0x000001,0x000001,backgroundAlpha,emboss) textarea(7979+id,"",targetPlayer,x,y-1,width,height,backgroundColor,borderColor,backgroundAlpha,emboss) end textarea(id,text,targetPlayer,x,y,width,height,backgroundColor,borderColor,backgroundAlpha,emboss) end
- function split(t,s)
- local a={}
- for i,v in string.gmatch(t,string.format("[^%s]+",s or "%s")) do
- table.insert(a,i)
- end
- return a
- end
- function eventChatCommand(name,cmd)
- arg=split(cmd," ")
- haveTribe=false
- for i,v in pairs(tribos.owners) do
- if tribos.tribes[v] then
- for id,nome in pairs (tribos.tribes[v].members) do
- if name == nome then
- haveTribe=true
- owner=v
- end
- end
- end
- end
- if cmd:sub(1,1) == "t" and cmd:sub(3) and haveTribe then
- eventPopupAnswer(14,name,cmd:sub(3))
- end
- end
- function eventPopupAnswer(id,name,answer)
- if id == 14 and answer ~= "" and not answer:find("<->") and not answer:find("</->") then
- if #answer <= 46 then
- for i,v in pairs(tribos.owners) do
- if tribos.tribes[v] then
- for id,nome in pairs (tribos.tribes[v].members) do
- if name == nome then
- haveTribe=true
- owner=v
- end
- end
- end
- end
- table.insert(tribos.tribes[owner].chat,{name=name,msg=answer,time=os.time()})
- for id,nome in pairs (tribos.tribes[owner].members) do
- if player[nome].openChat then
- eventTextAreaCallback(nil,nome,"chat")
- end
- end
- else
- ui.addPopup(2, 0, "<B><font color='#CB546B'><p align='center'>Você não mandar uma mensagem com mais de 46 caracteres.", name, 200, 160, 405, true)
- end
- end
- if id == 12 and answer ~= "" and #answer > 4 then
- for i,v in pairs(tribos.owners) do
- if tribos.tribes[v] then
- for id,nome in pairs (tribos.tribes[v].members) do
- if name == nome then
- haveTribe=true
- owner=v
- end
- end
- end
- end
- tribos.tribes[owner].message=answer
- for id,nome in pairs (tribos.tribes[owner].members) do
- if player[nome].openTribe then
- eventTextAreaCallback(nil,nome,"updateMessage")
- end
- ui.addPopup(2, 0, "<p align='center'>"..name.." alterou a mensagem da tribo.", nome, 200, 160, 405, true)
- end
- end
- if id == 7 then
- if answer == "yes" then
- for i,v in pairs(tribos.owners) do
- if tribos.tribes[v] then
- for id,nome in pairs (tribos.tribes[v].members) do
- if name == nome then
- owner=v
- playerID=id
- end
- end
- end
- end
- table.remove(tribos.tribes[owner].members,playerID)
- eventTextAreaCallback(nil,name,"close_tribe")
- for id,nome in pairs (tribos.tribes[owner].members) do
- eventTextAreaCallback(nil,nome,"updateMembers")
- ui.addPopup(2, 0, "<p align='center'>"..name.." saiu da tribo.", nome, 200, 160, 405, true)
- end
- ui.addPopup(2, 0, "<p align='center'>Você saiu da tribo.", name, 200, 160, 405, true)
- if #tribos.tribes[owner].members == 0 then
- tribos.tribes[owner]=nil
- ui.addPopup(2, 0, "<p align='center'>Sua tribo foi extinguida.", name, 200, 160, 405, true)
- end
- end
- end
- if id == 0 and answer ~= "" and #answer > 3 and #answer <= 27 then
- cancel=false
- for _,v in pairs({"<",">","/>","</"}) do
- if answer:find(tostring(v)) then
- cancel=true
- end
- end
- if not cancel then
- tribos.tribes[name]={
- name=answer:lower():gsub('%a', string.upper, 1),
- members={},
- message="Bem vindo(a) à tribo "..answer:lower():gsub('%a', string.upper, 1).."!<BR>Tribo criada por <B>"..name.."</B>.",
- chat={},
- }
- table.insert(tribos.owners,name)
- table.insert(tribos.tribes[name].members,name)
- eventTextAreaCallback(nil,name,"tribo")
- ui.addPopup(2, 0, "<p align='center'><font color=\"#FFFFFF\">A tribo<font color=\"#3df405\"> "..answer.."<font color=\"#FFFFFF\"> foi criada com sucesso", name, 200, 160, 405, true)
- else
- ui.addPopup(2, 0, "<B><font color='#CB546B'><p align='center'>Você não pode usar tags no nome da tribo.", name, 200, 160, 405, true)
- end
- elseif id == 0 then
- if #answer > 27 then messageError = "Sua tribo não pode ter um nome maior que 27 caracteres." elseif answer == "" then messageError = "Você não pode criar tribo sem nome." elseif #answer < 4 then messageError = "O nome de sua tribo deve ter no mínimo 4 letras." end
- ui.addPopup(2, 0, "<B><font color='#CB546B'><p align='center'>"..messageError, name, 200, 160, 405, true)
- end
- if id == 4 then
- if answer == "yes" then
- owner=player[name].ownerTribe
- for i,v in pairs(tribos.owners) do
- if tribos.tribes[v] then
- for id,nome in pairs (tribos.tribes[v].members) do
- if owner == nome then
- owner=v
- playerID=id
- end
- end
- end
- end
- table.insert(tribos.tribes[owner].members,name)
- eventTextAreaCallback(nil,name,"tribo")
- for id,nome in pairs (tribos.tribes[owner].members) do
- if player[nome].openTribe then
- eventTextAreaCallback(nil,nome,"updateMembers")
- end
- end
- ui.addPopup(2, 0, "<p align='center'>"..name.." aceitou o convite.", owner, 200, 160, 405, true)
- player[name].ownerTribe=""
- elseif id == 4 then
- owner=player[name].ownerTribe
- ui.addPopup(2, 0, "<p align='center'>"..name.." recusou o convite.", owner, 200, 160, 405, true)
- player[name].ownerTribe=""
- end
- end
- if id == 1 and answer ~= "" and #answer >= 3 then
- answer=answer:lower():gsub('%a', string.upper, 1)
- if tfm.get.room.playerList[answer] then
- cancel=false
- for i,v in pairs(tribos.owners) do
- if tribos.tribes[v] then
- for id,nome in pairs (tribos.tribes[v].members) do
- if name == nome then
- owner=v
- end
- if nome == answer then
- cancel=true
- end
- end
- end
- end
- if cancel then
- ui.addPopup(2, 0, "<B><font color='#CB546B'><p align='center'>"..answer.." já tem tribo.", name, 200, 160, 405, true)
- else
- player[answer].ownerTribe = name
- ui.addPopup(2, 0, "<p align='center'>Solicitação enviada.", name, 200, 160, 405, true)
- ui.addPopup(4, 1, "<font color=\"#3df405\">"..name.." <font color=\"#FFFFFF\"> convida você para fazer parte da tribo <font color='#3df405'>'"..tribos.tribes[owner].name.."'</font>, você aceita?", answer, 200, 160, 405, true)
- end
- else
- ui.addPopup(2, 0, "<B><font color='#CB546B'><p align='center'>O jogador "..answer.." não existe.", name, 200, 160, 405, true)
- end
- end
- end
- function eventTextAreaCallback(id,name,link)
- if link == "close_tribe" then
- for i=1,13 do
- ui.removeTextArea(i,name) ui.removeTextArea(6969+i,name) ui.removeTextArea(7979+i,name)
- end
- player[name].openTribe=false
- player[name].openChat=false
- end
- if link == "leave_tribe" then
- ui.addPopup(7, 1, "<p align='center'>Você realmente deseja sair da tribo?", name, 200, 160, 405, true)
- end
- if link == "recrutar" then
- ui.addPopup(1, 2, "<p align='center'>Nome do jogador:", name, 200, 160, 405, true)
- end
- if link == "back" and player[name].pageSelected > 1 then
- player[name].pageSelected=player[name].pageSelected-1
- player[name].backornext=true
- if not player[name].openChat then
- eventTextAreaCallback(nil,name,"tribo")
- else
- eventTextAreaCallback(nil,name,"chat")
- end
- end
- if link == "next" and player[name].pageSelected < player[name].pageLimit then
- player[name].pageSelected=player[name].pageSelected+1
- player[name].backornext=true
- if not player[name].openChat then
- eventTextAreaCallback(nil,name,"tribo")
- else
- eventTextAreaCallback(nil,name,"chat")
- end
- end
- if link == "option" then
- for i=6,9 do
- ui.removeTextArea(i,name) ui.removeTextArea(6969+i,name) ui.removeTextArea(7979+i,name)
- end
- ui.addTextArea(5, "", name, 365, 115, 240, 210, 0x243b4d, 0x243b4d, nil, true, true)
- ui.addTextArea(6, "<font size='12'><B><p align='center'><a href='event:tribo'>Voltar", name, 365, 342, 240, 20, 0x243b4d, 0x243b4d, nil, true, true)
- ui.addTextArea(7, "<font size='12'><B><a href='event:recrutar'>Recrutar Jogador</a>", name, 367, 116, 236, 20, 0x334a5c, 0x334a5c, nil, true)
- ui.addTextArea(8, "<font size='12'><B><a href='event:leave_tribe'>Sair da Tribo</a>", name, 367, 148, 236, 20, 0x334a5c, 0x334a5c, nil, true)
- end
- if link == "send-message" then
- ui.addPopup(2, 0, "<p align='center'>Usar <B>!t mensagem</B> é mais prático.", name, 200, 160, 405, true)
- end
- if link == "showMembers" then
- if player[name].membersON then
- player[name].membersON=false
- player[name].showMembers="Mostrar membros em sala"
- elseif not player[name].membersON then
- player[name].membersON=true
- player[name].showMembers="Mostrar membros fora da sala"
- end
- eventTextAreaCallback(nil,name,"tribo")
- end
- if link == "chat" then
- for i=3,9 do
- ui.removeTextArea(i,name) ui.removeTextArea(6969+i,name) ui.removeTextArea(7979+i,name)
- end
- player[name].openChat=true
- player[name].openTribe=false
- sel=1
- pages[sel]=""
- limit=14
- for i,v in pairs(tribos.owners) do
- if tribos.tribes[v] then
- for id,nome in pairs (tribos.tribes[v].members) do
- if name == nome then
- owner=v
- end
- end
- end
- end
- if #tribos.tribes[owner].chat == 256 then
- for i,nome in pairs(tribos.tribes[owner].members) do
- ui.addPopup(2, 0, string.format("Olá %s foi apagado 156 mensagens do chat da tribo, por que o limite de mensagens é de 256 mensagens e já foi atingido este limite.",nome), nome, 200, 160, 405, true)
- end
- for i=1,156 do table.remove(tribos.tribes[owner].chat,i) end
- end
- if #tribos.tribes[owner].chat ~= 0 then
- messages=""
- for i,v in pairs(tribos.owners) do
- if tribos.tribes[v] then
- for id,nome in pairs (tribos.tribes[v].members) do
- if name == nome then
- owner=v
- end
- end
- end
- end
- table.sort(tribos.tribes[owner].chat,function(a,b) return a.time<b.time end)
- for i,v in pairs(tribos.tribes[owner].chat) do
- if owner == v.name then
- simbol="☆"
- else
- simbol="≡"
- end
- if pages[sel] ~= "" then
- pages[sel]=pages[sel].."<br><PT>["..simbol.."][<a href='event:'>"..v.name.."</a>]</PT> <T>"..v.msg.."</T>"
- else
- pages[sel]="<PT>["..simbol.."][<a href='event:'>"..v.name.."</a>]</PT> <T>"..v.msg.."</T>"
- end
- if i == limit then
- sel=sel+1;
- pages[sel]=""
- limit=limit+14
- end
- end
- end
- player[name].pageLimit=sel
- if not player[name].backornext then
- player[name].pageSelected=sel
- else
- player[name].backornext=false
- end
- if pages[player[name].pageSelected] == "" then
- pages[player[name].pageSelected]="Não há mensagens :/"
- end
- ui.addTextArea(5, "", name, 197, 115, 410, 210, 0x243b4d, 0x243b4d, nil, true, true)
- ui.addTextArea(6, pages[player[name].pageSelected], name, 197, 110, 413, 210, 0, 0, 0, true)
- ui.addTextArea(7, "<p align='center'><font size='12'> <a href='event:back'>«</a> "..player[name].pageSelected.."/"..sel.." <a href='event:next'>»</a>", name, 198, 308, 408, 16, 0x334a5c, 0x334a5c, 90, true)
- ui.addTextArea(8, "<font size='12'><B><p align='center'><a href='event:tribo'>Voltar", name, 385, 342, 220, 20, 0x243b4d, 0x243b4d, nil, true, true)
- ui.addTextArea(9, "<font size='12'><B><p align='center'><a href='event:send-message'>Enviar Mensagem", name, 197, 342, 170, 20, 0x243b4d, 0x243b4d, nil, true, true)
- end
- if link == "modifiy-message" then
- ui.addPopup(12, 2, "<p align='center'>Nova mensagem da tribo:", name, 200, 160, 405, true)
- end
- if link == "updateMessage" and player[name].openTribe then
- for i,v in pairs(tribos.owners) do
- if tribos.tribes[v] then
- for id,nome in pairs (tribos.tribes[v].members) do
- if name == nome then
- haveTribe=true
- owner=v
- end
- end
- end
- end
- ui.addTextArea(5, tribos.tribes[owner].message, name, 365, 115, 240, 110, 0x243b4d, 0x243b4d, nil, true, true)
- end
- if link == "updateMembers" and player[name].openTribe then
- haveTribe=false
- for i,v in pairs(tribos.owners) do
- if tribos.tribes[v] then
- for id,nome in pairs (tribos.tribes[v].members) do
- if name == nome then
- haveTribe=true
- owner=v
- end
- end
- end
- end
- if haveTribe then
- pages={}
- sel=1
- pages[sel]=""
- limit=12
- if tribos.tribes[owner] then
- for id,nome in pairs (tribos.tribes[owner].members) do
- if nome == owner then
- simbol="<a href='event:'>☆</a> "..nome
- else
- simbol="<a href='event:'>≡</a> "..nome
- end
- if player[name].membersON then
- if player[nome].inRoom then
- if pages[sel] ~= "" then
- pages[sel]=pages[sel].."<br>"..simbol
- else
- pages[sel]=simbol
- end
- end
- elseif not player[name].membersON then
- if not player[nome].inRoom then
- if pages[sel] ~= "" then
- pages[sel]=pages[sel].."<br>"..simbol
- else
- pages[sel]=simbol
- end
- end
- end
- if id == limit then
- sel=sel+1;
- pages[sel]=""
- limit=limit+12
- end
- end
- end
- if #pages == 0 then
- table.insert(pages,str)
- end
- player[name].pageLimit=sel
- player[name].openTribe=true
- player[name].pageSelected=sel
- ui.addTextArea(3, "<font size='16'>"..pages[player[name].pageSelected], name, 197, 115, 150, 248, 0x243b4d, 0x243b4d, nil, true, true)
- ui.addTextArea(4, "<font size='12'> <a href='event:back'>«</a> "..player[name].pageSelected.."/"..sel.." <a href='event:next'>»</a>", name, 198, 346, 148, 16, 0x334a5c, 0x334a5c, nil, true)
- end
- end
- if link == "tribo" then
- player[name].openChat=false
- for i=10,13 do ui.removeTextArea(i,name) end
- haveTribe=false
- for i,v in pairs(tribos.owners) do
- if tribos.tribes[v] then
- for id,nome in pairs (tribos.tribes[v].members) do
- if name == nome then
- haveTribe=true
- owner=v
- end
- end
- end
- end
- if haveTribe then
- ui.addTextArea(1, "", name, 193, 66, 417, 300, nil, 0x324645, nil, true,true)
- ui.addTextArea(2, "<p align='center'><font size='20'><CEP>"..tribos.tribes[owner].name, name, 195, 68, 415, 31, 0x243b4d, 0x243b4d, nil, true,true)
- pages={}
- sel=1
- pages[sel]=""
- limit=12
- if tribos.tribes[owner] then
- for id,nome in pairs (tribos.tribes[owner].members) do
- if nome == owner then
- simbol="<a href='event:'>☆</a> "..nome
- else
- simbol="<a href='event:'>≡</a> "..nome
- end
- if player[name].membersON then
- if player[nome].inRoom then
- if pages[sel] ~= "" then
- pages[sel]=pages[sel].."<br>"..simbol
- else
- pages[sel]=simbol
- end
- end
- elseif not player[name].membersON then
- if not player[nome].inRoom then
- if pages[sel] ~= "" then
- pages[sel]=pages[sel].."<br>"..simbol
- else
- pages[sel]=simbol
- end
- end
- end
- if id == limit then
- sel=sel+1;
- pages[sel]=""
- limit=limit+12
- end
- end
- end
- if #pages == 0 then
- table.insert(pages,str)
- end
- player[name].pageLimit=sel
- player[name].openTribe=true
- player[name].pageSelected=sel
- ui.addTextArea(3, "<font size='16'>"..pages[player[name].pageSelected], name, 197, 115, 150, 248, 0x243b4d, 0x243b4d, nil, true, true)
- ui.addTextArea(4, "<font size='12'> <a href='event:back'>«</a> "..player[name].pageSelected.."/"..sel.." <a href='event:next'>»</a>", name, 198, 346, 148, 16, 0x334a5c, 0x334a5c, nil, true)
- ui.addTextArea(5, tribos.tribes[owner].message, name, 365, 115, 240, 110, 0x243b4d, 0x243b4d, nil, true, true)
- ui.addTextArea(6, "<font size='12'><B><p align='center'><a href='event:modifiy-message'>Modificar mensagem da tribo", name, 365, 239, 240, 20, 0x243b4d, 0x243b4d, nil, true, true)
- ui.addTextArea(7, "<font size='12'><B><p align='center'><a href='event:chat'>Abrir chat da tribo", name, 365, 274, 240, 20, 0x243b4d, 0x243b4d, nil, true, true)
- ui.addTextArea(8, "<font size='12'><B><p align='center'><a href='event:option'>Opções", name, 365, 308, 240, 20, 0x243b4d, 0x243b4d, nil, true, true)
- ui.addTextArea(9, "<font size='12'><B><p align='center'><a href='event:showMembers'>"..player[name].showMembers, name, 365, 342, 240, 20, 0x243b4d, 0x243b4d, nil, true, true)
- ui.addTextArea(10, "<font size='20'><B><p align='center'><a href='event:close_tribe'><R>X", name, 573, 68, 42, 33, 0x324650, 0x000000, 0, true)
- else
- ui.addPopup(0, 2, "<p align='center'>Nome da sua nova tribo:", name, 200, 160, 405, true)
- end
- end
- end
- function eventPlayerLeft(name)
- player[name].inRoom=false
- haveTribe=false
- for i,v in pairs(tribos.owners) do
- if tribos.tribes[v] then
- for id,nome in pairs (tribos.tribes[v].members) do
- if name == nome then
- haveTribe=true
- owner=v
- end
- end
- end
- end
- if haveTribe then
- for id,nome in pairs (tribos.tribes[owner].members) do
- if player[nome].openTribe then
- eventTextAreaCallback(nil,nome,"updateMembers")
- end
- end
- end
- end
- function eventNewPlayer(name)
- player[name]={
- pageSelected=1,
- ownerTribe="",
- pageLimit=1,
- inRoom=true,
- openTribe=false,
- membersON=true,
- backornext=false,
- showMembers="Mostrar membros fora da sala"
- }
- haveTribe=false
- for i,v in pairs(tribos.owners) do
- if tribos.tribes[v] then
- for id,nome in pairs (tribos.tribes[v].members) do
- if name == nome then
- haveTribe=true
- owner=v
- end
- end
- end
- end
- if haveTribe then
- for id,nome in pairs (tribos.tribes[owner].members) do
- if player[nome].openTribe then
- eventTextAreaCallback(nil,nome,"updateMembers")
- end
- end
- end
- ui.addTextArea(0, "<B><p align='center'><a href='event:tribo'><br><br><br><br>", name, 0, 365, 40, 40, 0, 0, 0, true)
- end
- for all in pairs(tfm.get.room.playerList) do
- eventNewPlayer(all)
- end
- system.disableChatCommandDisplay("t", true)
- system.disableChatCommandDisplay("T", true)
- tfm.exec.newGame('<C><P D="x_tribulle2/maison-tribu.png,0,360" /><Z><S><S X="400" L="800" Y="407" H="10" P="0,0,0.3,0.2,0,0,0,0" T="0" /></S><D /><O /></Z></C>')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement