Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <html>
- <head>
- <meta charset="ISO-8859-1">
- <title>Dialog Creator - KixTz.</title>
- <style>
- #preview{
- background-image: url("http://wiki.sa-mp.com/wroot/images2/a/a1/Dialog_style_msgbox.png");
- width: 367px;
- height: 113px;
- }
- </style>
- <script type="text/javascript">
- /**
- * Author: KixTz.
- * Release date: 12/07/2014
- **/
- var style = {
- DIALOG_STYLE_MSGBOX: 1,
- DIALOG_STYLE_INPUT: 2,
- DIALOG_STYLE_LIST: 3,
- DIALOG_STYLE_PASSWORD: 4
- };
- /**
- * Controla a nova linha a ser inserida dos itens do DIALOG_STYLE_LIST.
- * A primeira linha da tabela possui o índice zero e não um.
- * @type int
- */
- var iPosRow;
- /**
- * Gera o código conforme o estilo selecionado.
- */
- function generateCode() {
- var sPlayerId = document.getElementById("p_id").value;
- var sDialogId = document.getElementById("d_id").value;
- var sTitle = document.getElementById("title").value;
- var sText = document.getElementById("main_text").value;
- var sBtn1 = document.getElementById("text_btn_1").value;
- var sBtn2 = document.getElementById("text_btn_2").value;
- var sStyle;
- switch (parseInt(document.getElementById("style").value)) {
- case style.DIALOG_STYLE_MSGBOX:
- sStyle = "DIALOG_STYLE_MSGBOX";
- sOnResponse = getResponseMsgBox(sDialogId);
- break;
- case style.DIALOG_STYLE_INPUT:
- sStyle = "DIALOG_STYLE_INPUT";
- sOnResponse = getResponseInput(sDialogId);
- break;
- case style.DIALOG_STYLE_LIST:
- sStyle = "DIALOG_STYLE_LIST";
- if (iPosRow >= 7) {
- sText = document.getElementById("item0").value;
- if (iPosRow > 7) {
- for (var i = 1; i < (iPosRow - 6); i++) {
- sText += "\\n" + document.getElementById("item" + i).value;
- }
- }
- }
- sOnResponse = getResponseList(sDialogId);
- break;
- case style.DIALOG_STYLE_PASSWORD:
- sStyle = "DIALOG_STYLE_PASSWORD";
- var sDialog = "ShowPlayerDialog(" + sPlayerId + ", " + sDialogId + ", " + sStyle + ", \"" + sTitle + "\", \"" + sText + "\", \"" + sBtn1 + "\", \"" + sBtn2 + "\");";
- sOnResponse = getResponsePassword(sDialogId, sDialog);
- break;
- }
- var sFinalCode = "ShowPlayerDialog(" + sPlayerId + ", " + sDialogId + ", " + sStyle + ", \"" + sTitle + "\", \"" + sText + "\", \"" + sBtn1 + "\", \"" + sBtn2 + "\");<br><br>" + sOnResponse;
- var oDivFinalCode = document.getElementById("final_code");
- oDivFinalCode.style.display = "block";
- oDivFinalCode.innerHTML = sFinalCode;
- }
- /**
- * Altera a pré-visualização e alguns campos conforme estilo selecionado.
- * @param {string} sType - Tipo do estilo
- */
- function onChangeStyle(sType) {
- //Todos os dados de entrada são string, portanto devemos converter
- var iType = parseInt(sType);
- var oElMainText = document.getElementById("table_row_main_text");
- switch (iType) {
- case style.DIALOG_STYLE_MSGBOX:
- changePreview("http://wiki.sa-mp.com/wroot/images2/a/a1/Dialog_style_msgbox.png", "367px", "113px");
- oElMainText.style.display = "table-row";
- deleteOptions();
- break;
- case style.DIALOG_STYLE_INPUT:
- changePreview("http://wiki.sa-mp.com/wroot/images2/d/d5/Dialog_style_input.png", "487px", "146px");
- oElMainText.style.display = "table-row";
- deleteOptions();
- break;
- case style.DIALOG_STYLE_LIST:
- changePreview("http://wiki.sa-mp.com/wroot/images2/b/b1/Dialog_style_list.png", "339px", "294px");
- oElMainText.style.display = "none";
- firstItem();
- addRowBtnAdd();
- break;
- case style.DIALOG_STYLE_PASSWORD:
- changePreview("http://wiki.sa-mp.com/wroot/images2/f/f8/Dialog_style_password.png", "658px", "146px");
- oElMainText.style.display = "table-row";
- deleteOptions();
- break;
- }
- }
- /**
- * Altera a pré-visualização conforme parâmetros.
- * @param {string} sUrl - Caminho que se encontra imagem de fundo
- * @param {string} sWidth - Largura da imagem
- * @param {string} sHeight - Altura da imagem
- */
- function changePreview(sUrl, sWidth, sHeight) {
- document.getElementById("preview").style.backgroundImage = "url(" + sUrl + ")";
- document.getElementById("preview").style.width = sWidth;
- document.getElementById("preview").style.height = sHeight;
- }
- /**
- * Cria uma nova linha de item quando o estilo for list e habilita o botão "Delete item" do primeiro item quando esta função for disparada pelo botão "Add item".
- */
- function createItem() {
- //É criada essa variável novamente para passar no parâmetro do método deleteOption a linha atual e não a referência global
- var iPosCurrentRow = iPosRow;
- //Quando inserimos uma nova linha na tabela já é retornado um objeto html para a variável
- var oElRow = document.getElementById("tableEl").insertRow(iPosCurrentRow);
- //Recebe a primeira coluna da linha criada anteriormente
- var oElCelLabel = oElRow.insertCell(0);
- oElCelLabel.style.textAlign = "right";
- var oElSpan = document.createElement("span");
- oElSpan.innerHTML = "Item " + (iPosCurrentRow - 6) + ": ";
- oElCelLabel.appendChild(oElSpan);
- //Receba a segunda coluna da linha criada anteriormente
- var oElCelInput = oElRow.insertCell(1);
- //Vamos criar o input do item
- var oElInput = document.createElement("input");
- oElInput.id = "item" + (iPosCurrentRow - 6);
- oElInput.setAttribute("type", "text");
- //Vamos adicionar um filho(input criado) na coluna
- oElCelInput.appendChild(oElInput);
- oElInput.focus();
- //Vamos criar um botão para deletar a linha
- var oBtnDelItem = document.createElement("input");
- oBtnDelItem.setAttribute("type", "button");
- oBtnDelItem.id = "btn_del" + iPosCurrentRow;
- //Propriedade criada, não existe no html
- oBtnDelItem.row = iPosCurrentRow;
- oBtnDelItem.value = "Deletar item";
- oBtnDelItem.onclick = function() {
- deleteOption(oBtnDelItem.row);
- };
- oElCelInput.appendChild(oBtnDelItem);
- iPosRow++;
- toggleFirstBtnDel();
- }
- /**
- * Verifica se tem dois itens ou mais, se tiver habilita a opção de exclusão do item da primeira linha, caso contrário oculta.
- */
- function toggleFirstBtnDel() {
- if (iPosRow > 7) {
- document.getElementById("btn_del6").style.display = "inline-block";
- } else {
- document.getElementById("btn_del6").style.display = "none";
- }
- }
- /**
- * Cria a primeira opção dos itens, ocultando o botão de exclusão da primeira linha.
- */
- function firstItem() {
- iPosRow = 6;
- createItem();
- document.getElementById("btn_del6").style.display = "none";
- }
- /**
- * Deleta todos os itens, incluindo os botões de exclusão e o de "Add item".
- * É usado quando é trocado o estilo do diálogo.
- */
- function deleteOptions() {
- //Validação feita para deletar somente as linhas criadas dos itens do DIALOG_STYLE_LIST
- if (iPosRow > 6) {
- //Vamos incrementar para remover a linha dos botões
- iPosRow++;
- for (var i = iPosRow; i > 6; i--) {
- iPosRow--;
- document.getElementById("tableEl").deleteRow(i - 1);
- }
- }
- }
- /**
- * Deleta a linha que disparou a função, atualiza informações dos itens a baixo dela e caso só existir um item esconde o botão "Delete item" da primeira linha.
- * @param {int} iRowDel - Número da linha que disparou a função
- */
- function deleteOption(iRowDel) {
- if (iPosRow > 7) {
- document.getElementById("tableEl").deleteRow(iRowDel);
- iPosRow--;
- updateItems(iRowDel);
- toggleFirstBtnDel();
- }
- }
- /**
- * Adiciona a linha com o botão "add item" quando o estilo for list.
- */
- function addRowBtnAdd() {
- var oBtnAddItem = document.createElement("input");
- oBtnAddItem.setAttribute("type", "button");
- oBtnAddItem.value = "Add item";
- oBtnAddItem.onclick = function() {
- createItem();
- };
- var oElRowBtnsItems = document.getElementById("tableEl").insertRow(iPosRow);
- var oElCelBtns = oElRowBtnsItems.insertCell(0);
- oElCelBtns.colSpan = 2
- oElCelBtns.setAttribute("align", "center");
- oElCelBtns.appendChild(oBtnAddItem);
- }
- /**
- * Gera o código do response do message box.
- * @param {type} sDialogId - ID para diálogo
- * @returns {string}
- */
- function getResponseMsgBox(sDialogId) {
- var sCode =
- "public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){<br>" +
- " if(response){<br>" +
- " switch(dialogid){<br>" +
- " case "+sDialogId+":<br>" +
- " {<br>" +
- " SendClientMessage(playerid, 0xFFFFFF, \"Obrigado por concordar com as regras do servidor!\");<br>"+
- " return 1;<br>"+
- " }<br>" +
- " }<br>" +
- " }else{<br>" +
- " SendClientMessage(playerid, 0xFFFFFF, \"Você deve concordar com as regras do servidor para jogar aqui!\");<br>" +
- " }<br>" +
- " return 0;<br>" +
- "}";
- return sCode;
- }
- /**
- * Gera o código do response do input.
- * @param {type} sDialogId - ID para diálogo
- * @returns {string}
- */
- function getResponseInput(sDialogId) {
- var sCode =
- "public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){<br>" +
- " if(response){<br>" +
- " switch(dialogid){<br>" +
- " case "+sDialogId+":<br>" +
- " {<br>" +
- " if(algumaFuncao(playerid, inputtext)){<br>"+
- " return 1;<br>"+
- " }else{<br><br>"+
- " }<br>"+
- " }<br>" +
- " }<br>" +
- " }else{<br>" +
- " SendClientMessage(playerid, 0xFFFFFF, \"Você deve concordar com as regras do servidor para jogar aqui!\");<br>" +
- " }<br>" +
- " return 0;<br>" +
- "}";
- return sCode;
- }
- /**
- * Gera o código do response do list.
- * @param {type} sDialogId - ID para diálogo
- * @returns {string}
- */
- function getResponseList(sDialogId) {
- var sCode =
- "public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){<br>" +
- " if(response){<br>" +
- " switch(dialogid){<br>" +
- " case "+sDialogId+":<br>" +
- " {<br>" +
- " switch(listitem){<br>";
- for (var i = 0; i < (iPosRow - 6); i++) {
- sCode += " case " + i + ":<br>";
- sCode += " {<br>";
- sCode += " //Alguma coisa para o item "+i+"<br>";
- sCode += " return 1;<br>";
- sCode += " }<br>";
- }
- sCode += " }<br>" +
- " }<br>" +
- " }<br>" +
- " }else{<br>" +
- " SendClientMessage(playerid, 0xFFFFFF, \"Você deve concordar com as regras do servidor para jogar aqui!\");<br>" +
- " }<br>" +
- " return 0;<br>" +
- "}";
- return sCode;
- }
- /**
- * Gera o código do response do password.
- * @param {string} sDialogId - ID para diálogo
- * @param {string} sDialog - Função usada no ShowPlayerDialog do tipo password
- * @returns {string}
- */
- function getResponsePassword(sDialogId, sDialog) {
- var sCode =
- "public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){<br>" +
- " if(response){<br>" +
- " switch(dialogid){<br>" +
- " case "+sDialogId+":<br>" +
- " {<br>" +
- " if(CheckPassword(playerid, inputtext)){<br>"+
- " SendClientMessage(playerid, 0xFFFFFF, \"Você está logado!\"); return 1;<br>"+
- " }else{<br>"+
- " SendClientMessage(playerid, 0xFFFFFF, \"Falha no login.\");<br>"+
- " // Mostra o diálogo do login novamente.<br>"+
- " "+sDialog+"<br>"+
- " }<br>"+
- " }<br>" +
- " }<br>" +
- " }else{<br>" +
- " SendClientMessage(playerid, 0xFFFFFF, \"Você deve concordar com as regras do servidor para jogar aqui!\");<br>" +
- " }<br>" +
- " return 0;<br>" +
- "}";
- return sCode;
- }
- /**
- * Atualiza os itens a baixo da linha passada como parâmetro.
- * @param {int} iStartFrom - Número da linha
- */
- function updateItems(iStartFrom) {
- for (var i = iStartFrom; i < iPosRow; i++) {
- //Atualiza os labels dos itens
- document.getElementsByTagName("span")[i - 6].innerHTML = "Item " + (i - 6) + ": ";
- //Atualiza os id dos botões de exclusão dos itens
- document.getElementById("btn_del" + (i + 1)).id = "btn_del" + i;
- //Atualiza a linha que está o botão
- document.getElementById("btn_del" + i).row = i;
- //Atualiza os id dos input dos itens
- document.getElementById("item" + (i - 5)).id = "item" + (i - 6);
- }
- }
- </script>
- </head>
- <body>
- <div style="text-align:center;font-size:25px;font-weight:bold;border-top:2px solid black;border-bottom:2px solid black;padding:10px;">
- Criador de Diálogos
- </div>
- <hr>
- <div>Referências: <a href="http://wiki.sa-mp.com/wiki/Dialog_Styles">Dialog Styles</a> - <a href="http://wiki.sa-mp.com/wiki/ShowPlayerDialog">ShowPlayerDialog</a> - <a href="http://wiki.sa-mp.com/wiki/OnDialogResponse">OnDialogResponse</a></div>
- <hr>
- <table id="tableEl">
- <tr>
- <td style="text-align:right;">
- O id do jogador para mostrar o diálogo:
- </td>
- <td>
- <input type="text" id="p_id" value="playerid">
- </td>
- </tr>
- <tr>
- <td style="text-align:right;">
- Um id para atribuir ao diálogo:
- </td>
- <td>
- <input type="text" id="d_id">
- </td>
- </tr>
- <tr>
- <td style="text-align:right;">
- Estilo do diálogo:
- </td>
- <td>
- <select id="style" onchange="onChangeStyle(this.value)">
- <option value="1">Message Box</option>
- <option value="2">Input</option>
- <option value="3">List</option>
- <option value="4">Password</option>
- </select>
- </td>
- </tr>
- <tr>
- <td style="text-align:right;">
- Pré-visualização:
- </td>
- <td>
- <div id="preview"></div>
- </td>
- </tr>
- <tr>
- <td style="text-align:right;">
- Título:
- </td>
- <td>
- <input type="text" id="title" maxlength="64">
- </td>
- </tr>
- <tr id="table_row_main_text">
- <td style="text-align:right;">
- Texto principal:
- </td>
- <td>
- <textarea id="main_text" cols="50" rows="10"></textarea><br>Use \n para começar uma nova linha ou \t para tabular.
- </td>
- </tr>
- <tr>
- <td style="text-align:right;">
- Botão esquerdo:
- </td>
- <td>
- <input type="text" id="text_btn_1">
- </td>
- </tr>
- <tr>
- <td style="text-align:right;">
- Botão direito:
- </td>
- <td>
- <input type="text" id="text_btn_2">
- Deixe em branco para esconder o botão.
- </td>
- </tr>
- <tr>
- <td style="text-align:center;border:1px solid black;" colspan="2">
- <input type="button" id="generate" value="Gerar código !" onclick="generateCode()">
- </td>
- </tr>
- </table>
- <div id="final_code" style="display:none;"></div>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement